diff --git a/SeedDMS_Core/Core/inc.ClassDMS.php b/SeedDMS_Core/Core/inc.ClassDMS.php index dc69de3be..c34df05d8 100644 --- a/SeedDMS_Core/Core/inc.ClassDMS.php +++ b/SeedDMS_Core/Core/inc.ClassDMS.php @@ -2289,7 +2289,7 @@ class SeedDMS_Core_DMS { $workflows = array(); for ($i = 0; $i < count($resArr); $i++) { - $workflow = new SeedDMS_Core_Workflow($resArr[$i]["id"], $resArr[$i]["name"], $wkfstates[$resArr[$i]["initstate"]]); + $workflow = new SeedDMS_Core_Workflow($resArr[$i]["id"], $resArr[$i]["name"], $wkfstates[$resArr[$i]["initstate"]], $resArr[$i]["layoutdata"]); $workflow->setDMS($this); $workflows[$i] = $workflow; } diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index f3770f29b..0f91eb6f7 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -4919,7 +4919,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ return false; if(!$recs) return false; - $this->_workflow = new SeedDMS_Core_Workflow($recs[0]['id'], $recs[0]['name'], $this->_document->_dms->getWorkflowState($recs[0]['initstate'])); + $this->_workflow = new SeedDMS_Core_Workflow($recs[0]['id'], $recs[0]['name'], $this->_document->_dms->getWorkflowState($recs[0]['initstate']), $recs[0]["layoutdata"]); $this->_workflow->setDMS($this->_document->_dms); } return $this->_workflow; diff --git a/languages/ar_EG/lang.inc b/languages/ar_EG/lang.inc index a41889d32..110ff57c3 100644 --- a/languages/ar_EG/lang.inc +++ b/languages/ar_EG/lang.inc @@ -788,6 +788,7 @@ URL: [url]', 'receipt_status' => '', 'receipt_summary' => '', 'recipients' => '', +'redraw' => '', 'refresh' => 'اعادة تحميل', 'rejected' => 'مرفوض', 'released' => 'منشور', diff --git a/languages/bg_BG/lang.inc b/languages/bg_BG/lang.inc index ea7139764..8e4e4aa1b 100644 --- a/languages/bg_BG/lang.inc +++ b/languages/bg_BG/lang.inc @@ -689,6 +689,7 @@ $text = array( 'receipt_status' => '', 'receipt_summary' => '', 'recipients' => '', +'redraw' => '', 'refresh' => 'Обнови', 'rejected' => 'Отказан', 'released' => 'Утвърден', diff --git a/languages/ca_ES/lang.inc b/languages/ca_ES/lang.inc index eda7364c6..34ae54243 100644 --- a/languages/ca_ES/lang.inc +++ b/languages/ca_ES/lang.inc @@ -694,6 +694,7 @@ URL: [url]', 'receipt_status' => '', 'receipt_summary' => '', 'recipients' => '', +'redraw' => '', 'refresh' => 'Refresh', 'rejected' => 'Rebutjat', 'released' => 'Publicat', diff --git a/languages/cs_CZ/lang.inc b/languages/cs_CZ/lang.inc index 36545afc4..4dfa08af2 100644 --- a/languages/cs_CZ/lang.inc +++ b/languages/cs_CZ/lang.inc @@ -799,6 +799,7 @@ Pokud budete mít problém s přihlášením i po změně hesla, kontaktujte Adm 'receipt_status' => '', 'receipt_summary' => '', 'recipients' => '', +'redraw' => '', 'refresh' => 'Obnovit', 'rejected' => 'Odmítnuto', 'released' => 'Vydáno', diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index 9aef8c89e..d8fc58513 100644 --- a/languages/de_DE/lang.inc +++ b/languages/de_DE/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (2290), dgrutsch (21) +// Translators: Admin (2291), dgrutsch (21) $text = array( '2_factor_auth' => '2-Faktor Authentifizierung', @@ -812,6 +812,7 @@ URL: [url]', 'receipt_status' => 'Status', 'receipt_summary' => 'Übersicht Bestätigungen', 'recipients' => 'Empfänger', +'redraw' => 'Neu zeichnen', 'refresh' => 'Aktualisieren', 'rejected' => 'abgelehnt', 'released' => 'freigegeben', diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index 06c700d15..2e0798281 100644 --- a/languages/en_GB/lang.inc +++ b/languages/en_GB/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1437), dgrutsch (7), netixw (14) +// Translators: Admin (1438), dgrutsch (7), netixw (14) $text = array( '2_factor_auth' => '2-factor authentication', @@ -813,6 +813,7 @@ URL: [url]', 'receipt_status' => 'Status', 'receipt_summary' => 'Receipt summary', 'recipients' => 'Recipients', +'redraw' => 'Redraw', 'refresh' => 'Refresh', 'rejected' => 'Rejected', 'released' => 'Released', diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index 8e46495f4..93eae2092 100644 --- a/languages/es_ES/lang.inc +++ b/languages/es_ES/lang.inc @@ -803,6 +803,7 @@ Si continua teniendo problemas de acceso, por favor contacte con el administrado 'receipt_status' => '', 'receipt_summary' => '', 'recipients' => '', +'redraw' => '', 'refresh' => 'Actualizar', 'rejected' => 'Rechazado', 'released' => 'Publicado', diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index 915a2014c..37a5879df 100644 --- a/languages/fr_FR/lang.inc +++ b/languages/fr_FR/lang.inc @@ -800,6 +800,7 @@ En cas de problème persistant, veuillez contacter votre administrateur.', 'receipt_status' => '', 'receipt_summary' => '', 'recipients' => '', +'redraw' => '', 'refresh' => 'Actualiser', 'rejected' => 'Rejeté', 'released' => 'Publié', diff --git a/languages/hr_HR/lang.inc b/languages/hr_HR/lang.inc index 0f8c3769a..eb56e6068 100644 --- a/languages/hr_HR/lang.inc +++ b/languages/hr_HR/lang.inc @@ -807,6 +807,7 @@ Ako i dalje imate problema s prijavom, molimo kontaktirajte Vašeg administrator 'receipt_status' => '', 'receipt_summary' => 'Sažetak prijema', 'recipients' => 'Primatelji', +'redraw' => '', 'refresh' => 'Osvježi', 'rejected' => 'Odbijeno', 'released' => 'Obrađeno', diff --git a/languages/hu_HU/lang.inc b/languages/hu_HU/lang.inc index 89bc2756f..6e759e4ba 100644 --- a/languages/hu_HU/lang.inc +++ b/languages/hu_HU/lang.inc @@ -803,6 +803,7 @@ Amennyiben problémákba ütközik a bejelentkezés során, kérjük vegye fel a 'receipt_status' => '', 'receipt_summary' => '', 'recipients' => '', +'redraw' => '', 'refresh' => 'Frissítés', 'rejected' => 'Elutasított', 'released' => 'Kiadott', diff --git a/languages/it_IT/lang.inc b/languages/it_IT/lang.inc index 318a3beb1..7b39faeb9 100644 --- a/languages/it_IT/lang.inc +++ b/languages/it_IT/lang.inc @@ -814,6 +814,7 @@ URL: [url]', 'receipt_status' => 'Status', 'receipt_summary' => 'Sommario ricezione', 'recipients' => 'Cartelle', +'redraw' => '', 'refresh' => 'Ricarica', 'rejected' => 'Rifiutato', 'released' => 'Rilasciato', diff --git a/languages/ko_KR/lang.inc b/languages/ko_KR/lang.inc index 056e653af..599362d02 100644 --- a/languages/ko_KR/lang.inc +++ b/languages/ko_KR/lang.inc @@ -800,6 +800,7 @@ URL : [url]', 'receipt_status' => '', 'receipt_summary' => '접수증 요약', 'recipients' => '받는 사람', +'redraw' => '', 'refresh' => '새로 고침', 'rejected' => '거부', 'released' => '발표', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index 87de74587..008dc961b 100644 --- a/languages/nl_NL/lang.inc +++ b/languages/nl_NL/lang.inc @@ -806,6 +806,7 @@ URL: [url]', 'receipt_status' => 'Status ontvangst', 'receipt_summary' => 'Samenvatting', 'recipients' => 'Ontvangers', +'redraw' => '', 'refresh' => 'Verversen', 'rejected' => 'Afgewezen', 'released' => 'Gepubliceerd', diff --git a/languages/pl_PL/lang.inc b/languages/pl_PL/lang.inc index 93f279a5b..9ceb4219d 100644 --- a/languages/pl_PL/lang.inc +++ b/languages/pl_PL/lang.inc @@ -796,6 +796,7 @@ Jeśli nadal będą problemy z zalogowaniem, prosimy o kontakt z administratorem 'receipt_status' => '', 'receipt_summary' => '', 'recipients' => '', +'redraw' => '', 'refresh' => 'Odśwież', 'rejected' => 'Odrzucony', 'released' => 'Zatwierdzony', diff --git a/languages/pt_BR/lang.inc b/languages/pt_BR/lang.inc index 1a0344936..65997b789 100644 --- a/languages/pt_BR/lang.inc +++ b/languages/pt_BR/lang.inc @@ -801,6 +801,7 @@ Se você ainda tiver problemas para fazer o login, por favor, contate o administ 'receipt_status' => '', 'receipt_summary' => '', 'recipients' => '', +'redraw' => '', 'refresh' => 'Atualizar', 'rejected' => 'Rejected', 'released' => 'Released', diff --git a/languages/ro_RO/lang.inc b/languages/ro_RO/lang.inc index 6ae2beb55..7adbc43a2 100644 --- a/languages/ro_RO/lang.inc +++ b/languages/ro_RO/lang.inc @@ -808,6 +808,7 @@ Dacă aveți în continuare probleme la autentificare, vă rugăm să contactaț 'receipt_status' => '', 'receipt_summary' => '', 'recipients' => 'Destinatari', +'redraw' => '', 'refresh' => 'Refresh', 'rejected' => 'Respins', 'released' => 'Final(Released)', diff --git a/languages/ru_RU/lang.inc b/languages/ru_RU/lang.inc index 730d65a4a..5c75aed05 100644 --- a/languages/ru_RU/lang.inc +++ b/languages/ru_RU/lang.inc @@ -810,6 +810,7 @@ URL: [url]', 'receipt_status' => '', 'receipt_summary' => 'Сводка по получению', 'recipients' => 'Получатели', +'redraw' => '', 'refresh' => 'Обновить', 'rejected' => 'Отклонён', 'released' => 'Утверждён', diff --git a/languages/sk_SK/lang.inc b/languages/sk_SK/lang.inc index cfc24b943..bdbb69754 100644 --- a/languages/sk_SK/lang.inc +++ b/languages/sk_SK/lang.inc @@ -693,6 +693,7 @@ URL: [url]', 'receipt_status' => '', 'receipt_summary' => '', 'recipients' => '', +'redraw' => '', 'refresh' => '', 'rejected' => 'Odmietnuté', 'released' => 'Vydané', diff --git a/languages/sv_SE/lang.inc b/languages/sv_SE/lang.inc index 5eb322735..5a614cf91 100644 --- a/languages/sv_SE/lang.inc +++ b/languages/sv_SE/lang.inc @@ -788,6 +788,7 @@ URL: [url]', 'receipt_status' => '', 'receipt_summary' => '', 'recipients' => '', +'redraw' => '', 'refresh' => 'Uppdatera', 'rejected' => 'Avvisat', 'released' => 'Klart för användning', diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index bb2f60495..449ea6e5b 100644 --- a/languages/tr_TR/lang.inc +++ b/languages/tr_TR/lang.inc @@ -804,6 +804,7 @@ Giriş yaparken halen sorun yaşıyorsanız lütfen sistem yöneticinizle görü 'receipt_status' => '', 'receipt_summary' => '', 'recipients' => '', +'redraw' => '', 'refresh' => 'Yenile', 'rejected' => 'Reddedildi', 'released' => 'Yayınlandı', diff --git a/languages/uk_UA/lang.inc b/languages/uk_UA/lang.inc index ef96ee717..4781472de 100644 --- a/languages/uk_UA/lang.inc +++ b/languages/uk_UA/lang.inc @@ -810,6 +810,7 @@ URL: [url]', 'receipt_status' => '', 'receipt_summary' => 'Підсумки отримання', 'recipients' => 'Отримувачі', +'redraw' => '', 'refresh' => 'Оновити', 'rejected' => 'Відхилений', 'released' => 'Затверджений', diff --git a/languages/zh_CN/lang.inc b/languages/zh_CN/lang.inc index 99e306d24..fee3129d3 100644 --- a/languages/zh_CN/lang.inc +++ b/languages/zh_CN/lang.inc @@ -695,6 +695,7 @@ URL: [url]', 'receipt_status' => '', 'receipt_summary' => '', 'recipients' => '', +'redraw' => '', 'refresh' => '', 'rejected' => '拒绝', 'released' => '发布', diff --git a/languages/zh_TW/lang.inc b/languages/zh_TW/lang.inc index d951d6a02..e9dd7f4ce 100644 --- a/languages/zh_TW/lang.inc +++ b/languages/zh_TW/lang.inc @@ -693,6 +693,7 @@ URL: [url]', 'receipt_status' => '', 'receipt_summary' => '', 'recipients' => '', +'redraw' => '', 'refresh' => '', 'rejected' => '拒絕', 'released' => '發佈', diff --git a/views/bootstrap/class.WorkflowGraph.php b/views/bootstrap/class.WorkflowGraph.php index a59a1885e..fa6e42d24 100644 --- a/views/bootstrap/class.WorkflowGraph.php +++ b/views/bootstrap/class.WorkflowGraph.php @@ -33,6 +33,11 @@ class SeedDMS_View_WorkflowGraph extends SeedDMS_Bootstrap_Style { function js() { /* {{{ */ $this->workflow = $this->params['workflow']; + /* curtransitions is a list of transition that shall be highlighted. + * It is used to mark the current transition a user can trigger. + * Setting this will automatically show all other transitions with + * higher opacity. + */ $this->curtransitions = $this->params['transitions']; header('Content-Type: application/javascript; charset=UTF-8'); @@ -232,6 +237,7 @@ $(document).ready(function() { $this->seentrans = array(); $this->states = array(); $this->actions = array(); + $highlightstates = array(); foreach($transitions as $transition) { $action = $transition->getAction(); $maxtime = $transition->getMaxTime(); @@ -264,46 +270,43 @@ $(document).ready(function() { name: \"".str_replace('"', "\\\"", $action->getName())/*.($unames ? "\\n(".str_replace('"', "\\\"", implode(", ", $unames)).")" : '').($gnames ? "\\n(".str_replace('"', "\\\"", implode(", ", $gnames)).")" : '')*/."\" },".(isset($positions[$nodeid]) ? " position: {x: ".$positions[$nodeid]->x.", y: ".$positions[$nodeid]->y."}," : "")." - classes: 'action".($iscurtransition ? " current" : ($this->curtransitions ? " light" : ""))."', + classes: 'action".($iscurtransition ? " current" : ($this->curtransitions ? " light" : ""))."'".(!$this->curtransitions || $iscurtransition && $this->curtransitions ? ", scratch: { app: {groups: \"".str_replace('"', "\\\"", implode(", ", $gnames))."\", users: \"".str_replace('"', "\\\"", implode(", ", $unames))."\"} - } + }" : "")." });\n"; } - if(!isset($this->states[$state->getID()])) { + /* Collect all states and remember those which are part of a + * current transition. + */ + if(!isset($this->states[$state->getID()]) || $iscurtransition) { + if($iscurtransition) + $highlightstates[] = $state->getID(); $this->states[$state->getID()] = $state; - $initstate = ''; - if($state == $this->workflow->getInitState()) - $initstate = getMLText('workflow_initstate'); - $nodeid = "S".$state->getID(); - echo "cy.add({ - data: { - id: '".$nodeid."', - name: \"".str_replace('"', "\\\"", $state->getName()/*."\\n".$initstate*/)."\" - },".(isset($positions[$nodeid]) ? " - position: {x: ".$positions[$nodeid]->x.", y: ".$positions[$nodeid]->y."}," : "")." - classes: 'state ".($state == $this->workflow->getInitState() ? 'init' : '')."' -});\n"; } - if(!isset($this->states[$nextstate->getID()])) { + if(!isset($this->states[$nextstate->getID()]) || $iscurtransition) { + if($iscurtransition) + $highlightstates[] = $nextstate->getID(); $this->states[$nextstate->getID()] = $nextstate; - $docstatus = $nextstate->getDocumentStatus(); - $nodeid = "S".$nextstate->getID(); - echo "cy.add({ + } + } + + foreach($this->states as $state) { + $docstatus = $state->getDocumentStatus(); + $nodeid = 'S'.$state->getID(); + echo "cy.add({ data: { id: '".$nodeid."', - name: '".str_replace('"', "\\\"", $nextstate->getName())/*.($docstatus == S_RELEASED || $docstatus == S_REJECTED ? "\\n(".getOverallStatusText($docstatus).")" : '')*/."' + name: \"".str_replace('"', "\\\"", $state->getName())."\" },".(isset($positions[$nodeid]) ? " position: {x: ".$positions[$nodeid]->x.", y: ".$positions[$nodeid]->y."}," : "")." - classes: 'state".($docstatus == S_RELEASED ? ' released' : ($docstatus == S_REJECTED ? ' rejected' : ''))."' + classes: 'state".($state == $this->workflow->getInitState() ? ' init' : ($docstatus == S_RELEASED ? ' released' : ($docstatus == S_REJECTED ? ' rejected' : ''))).($highlightstates && !in_array($state->getID(), $highlightstates) ? ' light' : '')."' });\n"; - } - } foreach($transitions as $transition) { - if(!in_array($transition->getID(), $this->seentrans)) { +// if(!in_array($transition->getID(), $this->seentrans)) { $state = $transition->getState(); $nextstate = $transition->getNextState(); $action = $transition->getAction(); @@ -331,8 +334,8 @@ $(document).ready(function() { }, classes: '".($iscurtransition ? " current" : ($this->curtransitions ? " light" : ""))."', });\n"; - $this->seentrans[] = $transition->getID(); - } +// $this->seentrans[] = $transition->getID(); +// } } } ?>