Merge branch 'seeddms-5.1.x' into seeddms-6.0.x

This commit is contained in:
Uwe Steinmann 2021-08-20 10:51:34 +02:00
commit ada2730636
11 changed files with 96 additions and 74 deletions

View File

@ -480,7 +480,7 @@ class SeedDMS_Core_DMS {
$this->lasterror = ''; $this->lasterror = '';
$this->version = '@package_version@'; $this->version = '@package_version@';
if($this->version[0] == '@') if($this->version[0] == '@')
$this->version = '6.0.16'; $this->version = '6.0.17';
} /* }}} */ } /* }}} */
/** /**

View File

@ -12,11 +12,11 @@
<email>uwe@steinmann.cx</email> <email>uwe@steinmann.cx</email>
<active>yes</active> <active>yes</active>
</lead> </lead>
<date>2021-05-07</date> <date>2021-08-20</date>
<time>13:44:55</time> <time>13:44:55</time>
<version> <version>
<release>6.0.16</release> <release>6.0.17</release>
<api>6.0.16</api> <api>6.0.17</api>
</version> </version>
<stability> <stability>
<release>stable</release> <release>stable</release>
@ -24,19 +24,6 @@
</stability> </stability>
<license uri="http://opensource.org/licenses/gpl-license">GPL License</license> <license uri="http://opensource.org/licenses/gpl-license">GPL License</license>
<notes> <notes>
- SeedDMS_Core_DMS::getTimeline() uses status log instead of document content
- add methods SeedDMS_Core_DocumentContent::getReviewers() and SeedDMS_Core_DocumentContent::getApprovers()
- add methods SeedDMS_Core_DocumentContent::getApproveLog() and SeedDMS_Core_DocumentContent::getReviewLog()
- better handling of document with an empty workflow state
- fix checking of email addresses by using filter_var instead of regex
- add new method SeedDMS_Core_Document::hasCategory()
- add new method SeedDMS_Core_DocumentContent::removeReview()
- add new method SeedDMS_Core_DocumentContent::removeApproval()
- add new method SeedDMS_Core_User::getFolders()
- add new method SeedDMS_Core_User::getDocumentContents()
- add new method SeedDMS_Core_User::getDocumentFiles()
- add new method SeedDMS_Core_User::getDocumentLinks()
- add new type 'foldersperuser' to method SeedDMS_Core_DMS::getStatisticalData()
</notes> </notes>
<contents> <contents>
<dir baseinstalldir="SeedDMS" name="/"> <dir baseinstalldir="SeedDMS" name="/">
@ -1899,7 +1886,7 @@ add method SeedDMS_Core_DatabaseAccess::setLogFp()
</notes> </notes>
</release> </release>
<release> <release>
<date>2021-05-07</date> <date>2021-08-19</date>
<time>13:44:55</time> <time>13:44:55</time>
<version> <version>
<release>5.1.23</release> <release>5.1.23</release>
@ -1926,6 +1913,22 @@ add method SeedDMS_Core_DatabaseAccess::setLogFp()
- add new type 'foldersperuser' to method SeedDMS_Core_DMS::getStatisticalData() - add new type 'foldersperuser' to method SeedDMS_Core_DMS::getStatisticalData()
</notes> </notes>
</release> </release>
<release>
<date>2021-08-20</date>
<time>13:44:55</time>
<version>
<release>5.1.24</release>
<api>5.1.24</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<license uri="http://opensource.org/licenses/gpl-license">GPL License</license>
<notes>
- in SeedDMS_Core_DocumentContent::removeWorkflow() remove records from tblWorklflowLog before tblDWorkflowDocumentContent
</notes>
</release>
<release> <release>
<date>2017-02-28</date> <date>2017-02-28</date>
<time>06:34:50</time> <time>06:34:50</time>
@ -2228,5 +2231,20 @@ better error checking in SeedDMS_Core_Document::cancelCheckOut()
days for list DueRevisions days for list DueRevisions
</notes> </notes>
</release> </release>
<release>
<date>2021-05-07</date>
<time>13:44:55</time>
<version>
<release>6.0.16</release>
<api>6.0.16</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<license uri="http://opensource.org/licenses/gpl-license">GPL License</license>
<notes>
</notes>
</release>
</changelog> </changelog>
</package> </package>

View File

@ -20,7 +20,7 @@
class SeedDMS_Version { /* {{{ */ class SeedDMS_Version { /* {{{ */
const _number = "6.0.16"; const _number = "6.0.17";
const _string = "SeedDMS"; const _string = "SeedDMS";
function __construct() { function __construct() {

View File

@ -245,7 +245,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
echo "<table class=\"table table-condensed\">"; echo "<table class=\"table table-condensed\">";
echo "<tr><th>Key</th><th>engl. Text</th><th>Your translation</th></tr>\n"; echo "<tr><th>Key</th><th>engl. Text</th><th>Your translation</th></tr>\n";
foreach($MISSING_LANG as $key=>$lang) { foreach($MISSING_LANG as $key=>$lang) {
echo "<tr><td>".$key."</td><td>".(isset($LANG['en_GB'][$key]) ? $LANG['en_GB'][$key] : '')."</td><td><div class=\"input-append send-missing-translation\"><input name=\"missing-lang-key\" type=\"hidden\" value=\"".$key."\" /><input name=\"missing-lang-lang\" type=\"hidden\" value=\"".$lang."\" /><input type=\"text\" class=\"input-xxlarge\" name=\"missing-lang-translation\" placeholder=\"Your translation in '".$lang."'\"/><a class=\"btn\">Submit</a></div></td></tr>"; echo "<tr><td>".htmlspecialchars($key)."</td><td>".(isset($LANG['en_GB'][$key]) ? $LANG['en_GB'][$key] : '')."</td><td><div class=\"input-append send-missing-translation\"><input name=\"missing-lang-key\" type=\"hidden\" value=\"".$key."\" /><input name=\"missing-lang-lang\" type=\"hidden\" value=\"".$lang."\" /><input type=\"text\" class=\"input-xxlarge\" name=\"missing-lang-translation\" placeholder=\"Your translation in '".$lang."'\"/><a class=\"btn\">Submit</a></div></td></tr>";
} }
echo "</table>"; echo "</table>";
echo "<div class=\"splash\" data-type=\"error\" data-timeout=\"5500\"><b>There are missing translations on this page!</b><br />Please check the bottom of the page.</div>\n"; echo "<div class=\"splash\" data-type=\"error\" data-timeout=\"5500\"><b>There are missing translations on this page!</b><br />Please check the bottom of the page.</div>\n";
@ -3487,7 +3487,7 @@ $(document).ready(function() {
$accessop = $this->params['accessobject']; $accessop = $this->params['accessobject'];
?> ?>
<legend><?php printMLText($type.'_log'); ?></legend> <legend><?php printMLText($type.'_log'); ?></legend>
<table class="table condensed"> <table class="table table-condensed">
<tr><th><?php printMLText('name'); ?></th><th><?php printMLText('last_update'); ?>, <?php printMLText('comment'); ?></th><th><?php printMLText('status'); ?></th></tr> <tr><th><?php printMLText('name'); ?></th><th><?php printMLText('last_update'); ?>, <?php printMLText('comment'); ?></th><th><?php printMLText('status'); ?></th></tr>
<?php <?php
switch($type) { switch($type) {

View File

@ -68,14 +68,14 @@ class SeedDMS_View_RemoveWorkflowFromDocument extends SeedDMS_Theme_Style {
} else { } else {
$msg = getMLText('workflow_in_unknown_state'); $msg = getMLText('workflow_in_unknown_state');
} }
$this->infoMsg($msg); //$this->contentContainerStart();
$this->contentContainerStart();
// Display the Workflow form. // Display the Workflow form.
$this->rowStart(); $this->rowStart();
$this->columnStart(4); $this->columnStart(4);
$this->infoMsg($msg);
$this->warningMsg(getMLText('rm_workflow_warning'));
?> ?>
<p><?php printMLText("rm_workflow_warning"); ?></p>
<form method="post" action="../op/op.RemoveWorkflowFromDocument.php" name="form1"> <form method="post" action="../op/op.RemoveWorkflowFromDocument.php" name="form1">
<?php echo createHiddenFieldWithKey('removeworkflowfromdocument'); ?> <?php echo createHiddenFieldWithKey('removeworkflowfromdocument'); ?>
<input type='hidden' name='documentid' value='<?php echo $document->getId(); ?>'/> <input type='hidden' name='documentid' value='<?php echo $document->getId(); ?>'/>
@ -91,11 +91,12 @@ class SeedDMS_View_RemoveWorkflowFromDocument extends SeedDMS_Theme_Style {
</div> </div>
<?php <?php
$this->columnEnd(); $this->columnEnd();
$this->contentContainerEnd(); $this->rowEnd();
//$this->contentContainerEnd();
if($wkflog) { if($wkflog) {
$this->contentContainerStart(); $this->contentHeading(getMLText("workflow_log"));
echo "<table class=\"table-condensed\">"; echo "<table class=\"table table-condensed table-sm\">";
echo "<tr><th>".getMLText('action')."</th><th>Start state</th><th>End state</th><th>".getMLText('date')."</th><th>".getMLText('user')."</th><th>".getMLText('comment')."</th></tr>"; echo "<tr><th>".getMLText('action')."</th><th>Start state</th><th>End state</th><th>".getMLText('date')."</th><th>".getMLText('user')."</th><th>".getMLText('comment')."</th></tr>";
foreach($wkflog as $entry) { foreach($wkflog as $entry) {
echo "<tr>"; echo "<tr>";
@ -108,7 +109,6 @@ class SeedDMS_View_RemoveWorkflowFromDocument extends SeedDMS_Theme_Style {
echo "</tr>"; echo "</tr>";
} }
echo "</table>\n"; echo "</table>\n";
$this->contentContainerEnd();
} }
$this->rowEnd(); $this->rowEnd();

View File

@ -59,20 +59,22 @@ class SeedDMS_View_RewindWorkflow extends SeedDMS_Theme_Style {
$enterts = makeTsFromLongDate($enterdate); $enterts = makeTsFromLongDate($enterdate);
} }
} }
$msg .= "The state was entered at ".$enterdate." which was "; if(!empty($enterdate)) {
$msg .= getReadableDuration((time()-$enterts))." ago.<br />"; $msg .= "The state was entered at ".$enterdate." which was ";
$msg .= getReadableDuration((time()-$enterts))." ago.<br />";
}
} }
$msg .= "The document may stay in this state for ".$currentstate->getMaxTime()." sec."; $msg .= "The document may stay in this state for ".$currentstate->getMaxTime()." sec.";
} else { } else {
$msg = getMLText('workflow_in_unknown_state'); $msg = getMLText('workflow_in_unknown_state');
} }
$this->infoMsg($msg);
// Display the Workflow form. // Display the Workflow form.
$this->rowStart(); $this->rowStart();
$this->columnStart(4); $this->columnStart(4);
$this->infoMsg($msg);
$this->warningMsg(getMLText("rewind_workflow_warning"));
?> ?>
<?php $this->warningMsg(getMLText("rewind_workflow_warning")); ?>
<form method="post" action="../op/op.RewindWorkflow.php" name="form1"> <form method="post" action="../op/op.RewindWorkflow.php" name="form1">
<?php echo createHiddenFieldWithKey('rewindworkflow'); ?> <?php echo createHiddenFieldWithKey('rewindworkflow'); ?>
<input type='hidden' name='documentid' value='<?php echo $document->getId(); ?>'/> <input type='hidden' name='documentid' value='<?php echo $document->getId(); ?>'/>
@ -84,23 +86,24 @@ class SeedDMS_View_RewindWorkflow extends SeedDMS_Theme_Style {
$this->columnStart(8); $this->columnStart(8);
?> ?>
<div id="workflowgraph"> <div id="workflowgraph">
<iframe src="out.WorkflowGraph.php?workflow=<?php echo $workflow->getID(); ?>" width="100%" height="400" style="border: 1px solid #AAA;"></iframe> <iframe src="out.WorkflowGraph.php?workflow=<?php echo $workflow->getID(); ?>" width="100%" height="600" style="border: 1px solid #AAA;"></iframe>
</div> </div>
<?php <?php
$this->columnEnd(); $this->columnEnd();
$this->rowEnd(); $this->rowEnd();
if($wkflog) { if($wkflog) {
$this->contentHeading(getMLText("workflow_log"));
echo "<table class=\"table table-condensed table-sm\">"; echo "<table class=\"table table-condensed table-sm\">";
echo "<tr><th>".getMLText('action')."</th><th>Start state</th><th>End state</th><th>".getMLText('date')."</th><th>".getMLText('user')."</th><th>".getMLText('comment')."</th></tr>"; echo "<tr><th>".getMLText('action')."</th><th>Start state</th><th>End state</th><th>".getMLText('date')."</th><th>".getMLText('user')."</th><th>".getMLText('comment')."</th></tr>";
foreach($wkflog as $entry) { foreach($wkflog as $entry) {
echo "<tr>"; echo "<tr>";
echo "<td>".getMLText('action_'.$entry->getTransition()->getAction()->getName())."</td>"; echo "<td>".htmlspecialchars(getMLText('action_'.$entry->getTransition()->getAction()->getName()))."</td>";
echo "<td>".$entry->getTransition()->getState()->getName()."</td>"; echo "<td>".htmlspecialchars($entry->getTransition()->getState()->getName())."</td>";
echo "<td>".$entry->getTransition()->getNextState()->getName()."</td>"; echo "<td>".htmlspecialchars($entry->getTransition()->getNextState()->getName())."</td>";
echo "<td>".$entry->getDate()."</td>"; echo "<td>".$entry->getDate()."</td>";
echo "<td>".$entry->getUser()->getFullname()."</td>"; echo "<td>".htmlspecialchars($entry->getUser()->getFullname())."</td>";
echo "<td>".$entry->getComment()."</td>"; echo "<td>".htmlspecialchars($entry->getComment())."</td>";
echo "</tr>"; echo "</tr>";
} }
echo "</table>\n"; echo "</table>\n";

View File

@ -63,46 +63,46 @@ class SeedDMS_View_RunSubWorkflow extends SeedDMS_Theme_Style {
$msg .= getReadableDuration((time()-$enterts))." ago.<br />"; $msg .= getReadableDuration((time()-$enterts))." ago.<br />";
} }
$msg .= "The document may stay in this state for ".$currentstate->getMaxTime()." sec."; $msg .= "The document may stay in this state for ".$currentstate->getMaxTime()." sec.";
$this->infoMsg($msg);
$this->contentContainerStart(); //$this->contentContainerStart();
// Display the Workflow form. // Display the Workflow form.
$this->rowStart(); $this->rowStart();
$this->columnStart(4); $this->columnStart(4);
$this->infoMsg($msg);
?> ?>
<form method="POST" action="../op/op.RunSubWorkflow.php" name="form1"> <form method="POST" action="../op/op.RunSubWorkflow.php" name="form1">
<?php echo createHiddenFieldWithKey('runsubworkflow'); ?>
<table>
<tr><td></td><td>
<input type='hidden' name='documentid' value='<?php echo $document->getId(); ?>'/> <input type='hidden' name='documentid' value='<?php echo $document->getId(); ?>'/>
<input type='hidden' name='version' value='<?php echo $latestContent->getVersion(); ?>'/> <input type='hidden' name='version' value='<?php echo $latestContent->getVersion(); ?>'/>
<input type='hidden' name='subworkflow' value='<?php echo $subworkflow->getID(); ?>'/> <input type='hidden' name='subworkflow' value='<?php echo $subworkflow->getID(); ?>'/>
<input type='submit' class="btn btn-primary" value='<?php printMLText("run_subworkflow"); ?>'/> <?php
</td></tr></table> echo createHiddenFieldWithKey('runsubworkflow');
$this->formSubmit(getMLText("run_subworkflow"));
?>
</form> </form>
<?php <?php
$this->columnEnd(); $this->columnEnd();
$this->columnStart(4); $this->columnStart(8);
?> ?>
<div id="workflowgraph"> <div id="workflowgraph">
<iframe src="out.WorkflowGraph.php?workflow=<?php echo $subworkflow->getID(); ?>" width="100%" height="400" style="border: 1px solid #AAA;"></iframe> <iframe src="out.WorkflowGraph.php?workflow=<?php echo $subworkflow->getID(); ?>" width="100%" height="600" style="border: 1px solid #AAA;"></iframe>
</div> </div>
<?php <?php
$this->columnEnd(); $this->columnEnd();
$this->rowEnd(); $this->rowEnd();
$this->contentContainerEnd(); //$this->contentContainerEnd();
if($wkflog) { if($wkflog) {
$this->contentHeading(getMLText("workflow_log"));
echo "<table class=\"table table-condensed table-sm\">"; echo "<table class=\"table table-condensed table-sm\">";
echo "<tr><th>".getMLText('action')."</th><th>Start state</th><th>End state</th><th>".getMLText('date')."</th><th>".getMLText('user')."</th><th>".getMLText('comment')."</th></tr>"; echo "<tr><th>".getMLText('action')."</th><th>Start state</th><th>End state</th><th>".getMLText('date')."</th><th>".getMLText('user')."</th><th>".getMLText('comment')."</th></tr>";
foreach($wkflog as $entry) { foreach($wkflog as $entry) {
echo "<tr>"; echo "<tr>";
echo "<td>".getMLText('action_'.$entry->getTransition()->getAction()->getName())."</td>"; echo "<td>".htmlspecialchars(getMLText('action_'.strtolower($entry->getTransition()->getAction()->getName()), array(), $entry->getTransition()->getAction()->getName()))."</td>";
echo "<td>".$entry->getTransition()->getState()->getName()."</td>"; echo "<td>".htmlspecialchars($entry->getTransition()->getState()->getName())."</td>";
echo "<td>".$entry->getTransition()->getNextState()->getName()."</td>"; echo "<td>".htmlspecialchars($entry->getTransition()->getNextState()->getName())."</td>";
echo "<td>".$entry->getDate()."</td>"; echo "<td>".$entry->getDate()."</td>";
echo "<td>".$entry->getUser()->getFullname()."</td>"; echo "<td>".htmlspecialchars($entry->getUser()->getFullname())."</td>";
echo "<td>".$entry->getComment()."</td>"; echo "<td>".htmlspecialchars($entry->getComment())."</td>";
echo "</tr>"; echo "</tr>";
} }
echo "</table>\n"; echo "</table>\n";

View File

@ -91,16 +91,18 @@ $(document).ready(function() {
$enterts = makeTsFromLongDate($enterdate); $enterts = makeTsFromLongDate($enterdate);
} }
} }
$msg .= "The state was entered at ".$enterdate." which was "; if(!empty($enterdate)) {
$msg .= getReadableDuration((time()-$enterts))." ago.<br />"; $msg .= "The state was entered at ".$enterdate." which was ";
$msg .= getReadableDuration((time()-$enterts))." ago.<br />";
}
} }
$msg .= "The document may stay in this state for ".$currentstate->getMaxTime()." sec."; $msg .= "The document may stay in this state for ".$currentstate->getMaxTime()." sec.";
$this->infoMsg($msg);
$this->contentContainerStart(); //$this->contentContainerStart();
// Display the Workflow form. // Display the Workflow form.
$this->rowStart(); $this->rowStart();
$this->columnStart(4); $this->columnStart(4);
$this->infoMsg($msg);
?> ?>
<form class="form-horizontal" method="post" action="../op/op.TriggerWorkflow.php" id="form1" name="form1"> <form class="form-horizontal" method="post" action="../op/op.TriggerWorkflow.php" id="form1" name="form1">
<input type='hidden' name='documentid' value='<?php echo $document->getId(); ?>'/> <input type='hidden' name='documentid' value='<?php echo $document->getId(); ?>'/>
@ -124,29 +126,28 @@ $(document).ready(function() {
$this->columnStart(8); $this->columnStart(8);
?> ?>
<div id="workflowgraph"> <div id="workflowgraph">
<iframe src="out.WorkflowGraph.php?workflow=<?php echo $workflow->getID(); ?>&transitions[]=<?php echo $transition->getID(); ?>&documentid=<?php echo $document->getID(); ?>" width="100%" height="500" style="border: 1px solid #AAA;"></iframe> <iframe src="out.WorkflowGraph.php?workflow=<?php echo $workflow->getID(); ?>&transitions[]=<?php echo $transition->getID(); ?>&documentid=<?php echo $document->getID(); ?>" width="100%" height="600" style="border: 1px solid #AAA;"></iframe>
</div> </div>
<?php <?php
$this->columnEnd(); $this->columnEnd();
$this->rowEnd(); $this->rowEnd();
$this->contentContainerEnd(); //$this->contentContainerEnd();
if($wkflog) { if($wkflog) {
$this->contentContainerStart(); $this->contentHeading(getMLText("workflow_log"));
echo "<table class=\"table-condensed\">"; echo "<table class=\"table table-condensed table-sm\">";
echo "<tr><th>".getMLText('action')."</th><th>Start state</th><th>End state</th><th>".getMLText('date')."</th><th>".getMLText('user')."</th><th>".getMLText('comment')."</th></tr>"; echo "<tr><th>".getMLText('action')."</th><th>Start state</th><th>End state</th><th>".getMLText('date')."</th><th>".getMLText('user')."</th><th>".getMLText('comment')."</th></tr>";
foreach($wkflog as $entry) { foreach($wkflog as $entry) {
echo "<tr>"; echo "<tr>";
echo "<td>".getMLText('action_'.strtolower($entry->getTransition()->getAction()->getName()), array(), $entry->getTransition()->getAction()->getName())."</td>"; echo "<td>".htmlspecialchars(getMLText('action_'.strtolower($entry->getTransition()->getAction()->getName()), array(), $entry->getTransition()->getAction()->getName()))."</td>";
echo "<td>".$entry->getTransition()->getState()->getName()."</td>"; echo "<td>".htmlspecialchars($entry->getTransition()->getState()->getName())."</td>";
echo "<td>".$entry->getTransition()->getNextState()->getName()."</td>"; echo "<td>".htmlspecialchars($entry->getTransition()->getNextState()->getName())."</td>";
echo "<td>".$entry->getDate()."</td>"; echo "<td>".$entry->getDate()."</td>";
echo "<td>".$entry->getUser()->getFullname()."</td>"; echo "<td>".htmlspecialchars($entry->getUser()->getFullname())."</td>";
echo "<td>".$entry->getComment()."</td>"; echo "<td>".htmlspecialchars($entry->getComment())."</td>";
echo "</tr>"; echo "</tr>";
} }
echo "</table>\n"; echo "</table>\n";
$this->contentContainerEnd();
} }
$this->contentEnd(); $this->contentEnd();

View File

@ -1005,7 +1005,7 @@ $(document).ready( function() {
$wkflogs = $latestContent->getWorkflowLog(); $wkflogs = $latestContent->getWorkflowLog();
if($wkflogs) { if($wkflogs) {
$this->contentHeading(getMLText("workflow_summary")); $this->contentHeading(getMLText("workflow_log"));
$this->contentContainerStart(); $this->contentContainerStart();
foreach($wkflogs as $wkflogt) { foreach($wkflogs as $wkflogt) {
echo "<table class=\"table table-condensed table-sm\"><thead>"; echo "<table class=\"table table-condensed table-sm\"><thead>";
@ -1015,7 +1015,7 @@ $(document).ready( function() {
echo "<tr>"; echo "<tr>";
echo "<td>".htmlspecialchars($wkflog->getWorkflow()->getName())."</td>"; echo "<td>".htmlspecialchars($wkflog->getWorkflow()->getName())."</td>";
echo "<td>".$wkflog->getDate()."</td>"; echo "<td>".$wkflog->getDate()."</td>";
echo "<td>".htmlspecialchars($wkflog->getTransition()->getAction()->getName())."</td>"; echo "<td>".htmlspecialchars(getMLText('action_'.strtolower($wkflog->getTransition()->getAction()->getName()), array(), $wkflog->getTransition()->getAction()->getName()))."</td>";
$loguser = $wkflog->getUser(); $loguser = $wkflog->getUser();
echo "<td>".htmlspecialchars($loguser->getFullName())."</td>"; echo "<td>".htmlspecialchars($loguser->getFullName())."</td>";
echo "<td>".htmlspecialchars($wkflog->getComment())."</td>"; echo "<td>".htmlspecialchars($wkflog->getComment())."</td>";

View File

@ -369,15 +369,15 @@ div.buttons button {margin: 3px; _float: right;}
div.buttons #zoom {margin: 3px; _float: right;} div.buttons #zoom {margin: 3px; _float: right;}
#legend {display: inline-block; margin-left: 10px;} #legend {display: inline-block; margin-left: 10px;}
#preview {height: 122px; background: #f5f5f5; border-top: 1px solid #e3e3e3;} #preview {height: 122px; background: #f5f5f5; border-top: 1px solid #e3e3e3;}
#preview img {float: left;border: 1px solid #bbb; background: #fff; min-height: 115px; height: 115px; _width: 100px; padding: 3px; margin: 3px;} #preview img {float: left;border: 1px solid #bbb; background: #fff; min-height: 18vh; height: 18vh; _width: 100px; padding: 3px; margin: 3px;}
</style> </style>
', 'css'); ', 'css');
$this->htmlStartPage(getMLText("admin_tools")); $this->htmlStartPage(getMLText("admin_tools"));
// $this->contentContainerStart(); // $this->contentContainerStart();
?> ?>
<div id="canvas" style="width: 100%; height:545px; _border: 1px solid #bbb;"></div> <div id="canvas" style="width: 100%; height:78vh; _border: 1px solid #bbb;"></div>
<div id="preview"> <div id="preview" style="height:21vh; padding-top: 5px; padding-left: 5px;">
<img id="png" /> <img id="png" />
<div id="legend"> <div id="legend">
<i class="fa fa-circle initstate"></i> <?php printMLText("workflow_initstate"); ?><br /> <i class="fa fa-circle initstate"></i> <?php printMLText("workflow_initstate"); ?><br />

View File

@ -245,7 +245,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
echo "<table class=\"table table-sm\">"; echo "<table class=\"table table-sm\">";
echo "<tr><th>Key</th><th>engl. Text</th><th>Your translation</th></tr>\n"; echo "<tr><th>Key</th><th>engl. Text</th><th>Your translation</th></tr>\n";
foreach($MISSING_LANG as $key=>$lang) { foreach($MISSING_LANG as $key=>$lang) {
echo "<tr><td>".$key."</td><td>".(isset($LANG['en_GB'][$key]) ? $LANG['en_GB'][$key] : '')."</td><td><div class=\"input-group send-missing-translation\"><input name=\"missing-lang-key\" type=\"hidden\" value=\"".$key."\" /><input name=\"missing-lang-lang\" type=\"hidden\" value=\"".$lang."\" /><input type=\"text\" class=\"form-control\" name=\"missing-lang-translation\" placeholder=\"Your translation in '".$lang."'\"/><div class=\"input-group-append\"><button class=\"btn btn-secondary\">Submit</button></div></div></td></tr>"; echo "<tr><td>".htmlspecialchars($key)."</td><td>".(isset($LANG['en_GB'][$key]) ? $LANG['en_GB'][$key] : '')."</td><td><div class=\"input-group send-missing-translation\"><input name=\"missing-lang-key\" type=\"hidden\" value=\"".$key."\" /><input name=\"missing-lang-lang\" type=\"hidden\" value=\"".$lang."\" /><input type=\"text\" class=\"form-control\" name=\"missing-lang-translation\" placeholder=\"Your translation in '".$lang."'\"/><div class=\"input-group-append\"><button class=\"btn btn-secondary\">Submit</button></div></div></td></tr>";
} }
echo "</table>"; echo "</table>";
echo "<div class=\"splash\" data-type=\"error\" data-timeout=\"5500\"><b>There are missing translations on this page!</b><br />Please check the bottom of the page.</div>\n"; echo "<div class=\"splash\" data-type=\"error\" data-timeout=\"5500\"><b>There are missing translations on this page!</b><br />Please check the bottom of the page.</div>\n";