diff --git a/appinfo/application.php b/appinfo/application.php
new file mode 100644
index 0000000..97519ae
--- /dev/null
+++ b/appinfo/application.php
@@ -0,0 +1,22 @@
+getContainer()->registerService('SettingsController', function($c) {
+ return new SettingsController(
+ $c->query('OCP\IRequest'),
+ $c->query('OCP\IUserSession'),
+ $c->query('OCA\Deckflow\Service\WorkflowService')
+ );
+ });
+ }
+}
diff --git a/appinfo/controller/SettingsController.php b/appinfo/controller/SettingsController.php
deleted file mode 100644
index e69de29..0000000
diff --git a/appinfo/cron.php b/appinfo/cron.php
deleted file mode 100644
index 969ceb5..0000000
--- a/appinfo/cron.php
+++ /dev/null
@@ -1,9 +0,0 @@
-query('OCA\Deckflow\Cron\MoveOverdueCardsJob');
-
-// Führe den Cronjob aus
-$job->execute();
diff --git a/appinfo/info.xml b/appinfo/info.xml
deleted file mode 100644
index 942bb53..0000000
--- a/appinfo/info.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
- deckflow
- Deckflow
- Automatisiere Deck-Karten mit Cronjobs und Workflows
- Diese App automatisiert die Bewegung von Karten basierend auf Workflows und Überprüfungen von überfälligen Karten.
- 0.1.0
- deckflow
-
- 21
- workflow
- deck
-
-
\ No newline at end of file
diff --git a/appinfo/routes.php b/appinfo/routes.php
new file mode 100644
index 0000000..7c5732a
--- /dev/null
+++ b/appinfo/routes.php
@@ -0,0 +1,20 @@
+registerService('SettingsController', function(IContainer $c) {
+ return new \OCA\Deckflow\Controller\SettingsController(
+ $c->query('OCP\IRequest'),
+ $c->query('OCP\IUserSession'),
+ $c->query('OCA\Deckflow\Service\WorkflowService')
+ );
+});
+
+// Hier wird die Route für den Webhook definiert
+$container->registerService('WebhookController', function(IContainer $c) {
+ return new \OCA\Deckflow\Controller\WebhookController(
+ $c->query('OCP\IRequest'),
+ $c->query('OCA\Deckflow\Service\WorkflowService')
+ );
+});
diff --git a/assets/js/addWorkflow.js b/assets/js/addWorkflow.js
new file mode 100644
index 0000000..c9e7304
--- /dev/null
+++ b/assets/js/addWorkflow.js
@@ -0,0 +1,24 @@
+document.getElementById('addWorkflow').addEventListener('click', function() {
+ let workflowContainer = document.getElementById('workflows');
+ let newWorkflow = document.createElement('div');
+ newWorkflow.classList.add('workflow');
+
+ newWorkflow.innerHTML = `
+
+
+
+
+
+
+
+
+ `;
+
+ workflowContainer.appendChild(newWorkflow);
+});
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..0d6deaf
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,15 @@
+{
+ "name": "deckflow",
+ "description": "Automatisierung von Deck Workflows mit Flow",
+ "type": "nextcloud-app",
+ "require": {
+ "php": ">=7.2",
+ "nextcloud/server": "^23.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "OCA\\Deckflow\\": "lib/"
+ }
+ }
+ }
+
\ No newline at end of file
diff --git a/controller/SettingsController.php b/controller/SettingsController.php
new file mode 100644
index 0000000..3d13baf
--- /dev/null
+++ b/controller/SettingsController.php
@@ -0,0 +1,33 @@
+workflowService = $workflowService;
+ }
+
+ public function showSettingsForm() {
+ $workflows = $this->workflowService->getWorkflows();
+ return $this->render('settings.php', [
+ 'workflows' => $workflows
+ ]);
+ }
+
+ public function saveWorkflows() {
+ $deckId = $_POST['deckId'];
+ $sourceStackId = $_POST['sourceStack'];
+ $targetStackId = $_POST['targetStack'];
+
+ $this->workflowService->saveWorkflows($deckId, $sourceStackId, $targetStackId);
+ }
+}
diff --git a/controller/WebhookController.php b/controller/WebhookController.php
new file mode 100644
index 0000000..3fc735e
--- /dev/null
+++ b/controller/WebhookController.php
@@ -0,0 +1,25 @@
+workflowService = $workflowService;
+ }
+
+ public function moveCards() {
+ $deckId = $_POST['deckId'];
+ $sourceStackId = $_POST['sourceStackId'];
+ $targetStackId = $_POST['targetStackId'];
+
+ $this->workflowService->moveOverdueCards($deckId, $sourceStackId, $targetStackId);
+ }
+}
diff --git a/cron.php b/cron.php
new file mode 100644
index 0000000..ca4464c
--- /dev/null
+++ b/cron.php
@@ -0,0 +1,11 @@
+getWorkflows();
+
+foreach ($workflows as $workflow) {
+ $workflowService->moveOverdueCards($workflow['deck_id'], $workflow['source_stack_id'], $workflow['target_stack_id']);
+}
diff --git a/db/schema.xml b/db/schema.xml
new file mode 100644
index 0000000..535ca92
--- /dev/null
+++ b/db/schema.xml
@@ -0,0 +1,11 @@
+
+
+
+
diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php
deleted file mode 100644
index 24679e9..0000000
--- a/lib/AppInfo/Application.php
+++ /dev/null
@@ -1,32 +0,0 @@
-getContainer();
-
- // Routen für das Backend
- $container->registerService('SettingsController', function(IContainer $c) {
- return new SettingsController(
- $c->query('OCP\IRequest'),
- $c->query('OCP\IUserSession'),
- $c->query('OCA\Deckflow\Service\WorkflowService'),
- $c->query('OCP\IDBConnection')
- );
- });
-
- // CronJob registrieren
- $container->registerService('MoveOverdueCardsJob', function(IContainer $c) {
- return new MoveOverdueCardsJob(
- $c->query('OCA\Deckflow\Service\WorkflowService')
- );
- });
- }
-}
diff --git a/lib/AppInfo/DB/migration.php b/lib/AppInfo/DB/migration.php
deleted file mode 100644
index e0a3a85..0000000
--- a/lib/AppInfo/DB/migration.php
+++ /dev/null
@@ -1,21 +0,0 @@
-query("CREATE TABLE IF NOT EXISTS *PREFIX*deckflow_workflows (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- user_id TEXT NOT NULL,
- deck_id TEXT NOT NULL,
- source_stack_id TEXT NOT NULL,
- target_stack_id TEXT NOT NULL
- )");
- }
-}
diff --git a/lib/Cron/MoveOverdueCardsJob.php b/lib/Cron/MoveOverdueCardsJob.php
deleted file mode 100644
index 1882ca1..0000000
--- a/lib/Cron/MoveOverdueCardsJob.php
+++ /dev/null
@@ -1,27 +0,0 @@
-workflowService = $workflowService;
- }
-
- /**
- * Ausführen des Cronjobs
- */
- protected function run($argument) {
- try {
- // Überfällige Karten verschieben
- $this->workflowService->moveOverdueCards();
- } catch (\Exception $e) {
- \OCP\Util::writeLog('deckflow', 'Fehler beim Ausführen des Cronjobs: ' . $e->getMessage(), \OCP\Util::ERROR);
- }
- }
-}
diff --git a/lib/Service/WorkflowService.php b/lib/Service/WorkflowService.php
index 83bff0b..112fb73 100644
--- a/lib/Service/WorkflowService.php
+++ b/lib/Service/WorkflowService.php
@@ -1,60 +1,51 @@
db = $db;
$this->userSession = $userSession;
$this->deckService = $deckService;
- $this->logger = $logger;
- $this->db = $db;
}
- /**
- * Holt alle Workflows des aktuellen Benutzers
- * @return array
- */
- private function getUserWorkflows() {
- $user = $this->userSession->getUser();
- $userId = $user ? $user->getUID() : null;
+ // Speichert die Workflows
+ public function saveWorkflows($deckId, $sourceStackId, $targetStackId) {
+ $userId = $this->userSession->getUser()->getUID();
+ $this->db->executeQuery("INSERT INTO *PREFIX*deckflow_workflows (user_id, deck_id, source_stack_id, target_stack_id)
+ VALUES (?, ?, ?, ?)", [
+ $userId,
+ $deckId,
+ $sourceStackId,
+ $targetStackId
+ ]);
+ }
- // Hole alle Workflow-Konfigurationen des Benutzers aus der DB
+ // Ruft alle Workflows für den aktuellen Benutzer ab
+ public function getWorkflows() {
+ $userId = $this->userSession->getUser()->getUID();
$result = $this->db->executeQuery("SELECT * FROM *PREFIX*deckflow_workflows WHERE user_id = ?", [$userId]);
return $result->fetchAll();
}
- /**
- * Verschiebt überfällige Karten für alle Workflows
- */
- public function moveOverdueCards() {
- $user = $this->userSession->getUser();
- if ($user === null) {
- return;
- }
+ // Webhook zur Ausführung des Workflows, Karten zu verschieben
+ public function moveOverdueCards($deckId, $sourceStackId, $targetStackId) {
+ $deck = $this->deckService->getDeckById($deckId);
+ $sourceStack = $deck->getStackById($sourceStackId);
+ $targetStack = $deck->getStackById($targetStackId);
- $workflows = $this->getUserWorkflows();
-
- foreach ($workflows as $workflow) {
- // Hole das Deck und die Stacks aus der Konfiguration
- $deck = $this->deckService->getDeckById($workflow['deck_id']);
- $sourceStack = $deck->getStackById($workflow['source_stack_id']);
- $targetStack = $deck->getStackById($workflow['target_stack_id']);
-
- // Überprüfe alle Karten im Quellstapel auf Überfälligkeit
- foreach ($sourceStack->getCards() as $card) {
- if ($this->isCardOverdue($card)) {
- $this->moveCardToTargetStack($card, $targetStack);
- }
+ foreach ($sourceStack->getCards() as $card) {
+ if ($this->isCardOverdue($card)) {
+ $this->moveCardToTargetStack($card, $targetStack);
}
}
}
@@ -66,6 +57,5 @@ class WorkflowService {
private function moveCardToTargetStack($card, $targetStack) {
$this->deckService->moveCardToStack($card, $targetStack);
- $this->logger->info("Card moved to target stack.");
}
}
diff --git a/templates/settings.php b/templates/settings.php
index 0ce46b3..4636244 100644
--- a/templates/settings.php
+++ b/templates/settings.php
@@ -1,19 +1,28 @@
-
Deckflow Settings
-
+
+