Commit 7015994822247a0d19b2f8d621a5b037313bce4f

Authored by kevin_fourie
1 parent 6c116564

Merged in from STABLE trunk...

KTS-2076
"Character encoding issue with document titles"
Fixed this issue which lead to several other XSS issue fixes and i18n issue fixes.
Note: knowlegetree.pot needs an update due to i18n fixes.

Committed By: Kevin
Reviewed By: Conrad


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@6740 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing 76 changed files with 178 additions and 168 deletions
i18n/knowledgeTree.pot
... ... @@ -1850,7 +1850,7 @@ msgid "Control which users can log in, and are part of which groups and organisa
1850 1850 msgstr ""
1851 1851  
1852 1852 #: i18n/templates.c:3494 i18n/templates.c:3608
1853   -msgid "Controlled Actions available:"
  1853 +msgid "Controlled Actions available"
1854 1854 msgstr ""
1855 1855  
1856 1856 #: plugins/ktcore/admin/workflowsv2.php:1022 i18n/templates.c:3314
... ... @@ -2285,7 +2285,7 @@ msgid "Dashboard"
2285 2285 msgstr ""
2286 2286  
2287 2287 #: lib/validation/errorviewer.inc.php:130
2288   -msgid "Database error:"
  2288 +msgid "Database error"
2289 2289 msgstr ""
2290 2290  
2291 2291 #: i18n/templates.c:146 i18n/templates.c:155 i18n/templates.c:242
... ... @@ -4131,7 +4131,7 @@ msgstr ""
4131 4131  
4132 4132 #: i18n/templates.c:3326 i18n/templates.c:4043 i18n/templates.c:4415
4133 4133 #: i18n/templates.c:4922
4134   -msgid "Group:"
  4134 +msgid "Group"
4135 4135 msgstr ""
4136 4136  
4137 4137 #: plugins/ktcore/admin/groupManagement.php:398
... ... @@ -4159,7 +4159,7 @@ msgstr ""
4159 4159  
4160 4160 #: plugins/ktcore/admin/workflowsv2.php:1915 i18n/templates.c:4127
4161 4161 #: i18n/templates.c:4586
4162   -msgid "Groups:"
  4162 +msgid "Groups"
4163 4163 msgstr ""
4164 4164  
4165 4165 #: plugins/ktcore/admin/workflowsv2.php:1418
... ... @@ -5154,7 +5154,7 @@ msgid "Master field has no values which are assigned to behaviours."
5154 5154 msgstr ""
5155 5155  
5156 5156 #: i18n/templates.c:1331
5157   -msgid "Match <b>#join#</b> of the following:"
  5157 +msgid "Match <b>#join#</b> of the following"
5158 5158 msgstr ""
5159 5159  
5160 5160 #: plugins/ktcore/admin/userManagement.php:138
... ... @@ -6044,7 +6044,7 @@ msgid &quot;Notifications updated.&quot;
6044 6044 msgstr ""
6045 6045  
6046 6046 #: i18n/templates.c:3491 i18n/templates.c:3605
6047   -msgid "Notified groups & roles:"
  6047 +msgid "Notified groups & roles"
6048 6048 msgstr ""
6049 6049  
6050 6050 #: i18n/templates.c:5231
... ... @@ -6126,7 +6126,7 @@ msgid &quot;Orphaned Folders Plugin&quot;
6126 6126 msgstr ""
6127 6127  
6128 6128 #: i18n/templates.c:2081
6129   -msgid "Over time, the lookup values which make sense will change and evolve as your organisation does. You may thus need to change the lookup values associated with a given field. There are a number of different states that are possible for a given lookup:"
  6129 +msgid "Over time, the lookup values which make sense will change and evolve as your organisation does. You may thus need to change the lookup values associated with a given field. There are a number of different states that are possible for a given lookup"
6130 6130 msgstr ""
6131 6131  
6132 6132 #: i18n/templates.c:4130
... ... @@ -6255,7 +6255,7 @@ msgid &quot;Permissions on folder updated&quot;
6255 6255 msgstr ""
6256 6256  
6257 6257 #: i18n/templates.c:3497 i18n/templates.c:3611
6258   -msgid "Permissions overridden:"
  6258 +msgid "Permissions overridden"
6259 6259 msgstr ""
6260 6260  
6261 6261 #: plugins/ktcore/folder/Permissions.php:487
... ... @@ -6926,7 +6926,7 @@ msgstr &quot;&quot;
6926 6926  
6927 6927 #: i18n/templates.c:3323 i18n/templates.c:4034 i18n/templates.c:4406
6928 6928 #: i18n/templates.c:4913
6929   -msgid "Role:"
  6929 +msgid "Role"
6930 6930 msgstr ""
6931 6931  
6932 6932 #: plugins/ktcore/KTCorePlugin.php:218 i18n/templates.c:3230
... ... @@ -6935,7 +6935,7 @@ msgid &quot;Roles&quot;
6935 6935 msgstr ""
6936 6936  
6937 6937 #: plugins/ktcore/admin/workflowsv2.php:1921
6938   -msgid "Roles:"
  6938 +msgid "Roles"
6939 6939 msgstr ""
6940 6940  
6941 6941 #: plugins/ktcore/admin/fieldsets/basic.inc.php:707
... ... @@ -7650,7 +7650,7 @@ msgid &quot;The action cannot be performed on any of the selected entities.&quot;
7650 7650 msgstr ""
7651 7651  
7652 7652 #: i18n/templates.c:5729
7653   -msgid "The action will be performed on the following documents and folders:"
  7653 +msgid "The action will be performed on the following documents and folders"
7654 7654 msgstr ""
7655 7655  
7656 7656 #: plugins/ktcore/folder/BulkUpload.php:68
... ... @@ -7682,7 +7682,7 @@ msgid &quot;The core of a workflow is the &lt;strong&gt;process&lt;/strong&gt; that documents in
7682 7682 msgstr ""
7683 7683  
7684 7684 #: plugins/ktcore/document/Rename.php:74
7685   -msgid "The current file name is shown below:"
  7685 +msgid "The current file name is shown below"
7686 7686 msgstr ""
7687 7687  
7688 7688 #: i18n/templates.c:974
... ... @@ -7807,7 +7807,7 @@ msgid &quot;The following files are present in the repository, but do not exist in th
7807 7807 msgstr ""
7808 7808  
7809 7809 #: i18n/templates.c:5708
7810   -msgid "The following list shows documents and folders in your list which cannot be acted on by this bulk action:"
  7810 +msgid "The following list shows documents and folders in your list which cannot be acted on by this bulk action"
7811 7811 msgstr ""
7812 7812  
7813 7813 #: plugins/ktcore/admin/fieldsets/basic.inc.php:377
... ... @@ -7821,11 +7821,11 @@ msgid &quot;The following permissions are required: %s&quot;
7821 7821 msgstr ""
7822 7822  
7823 7823 #: i18n/templates.c:1010
7824   -msgid "The following upgrade is available:"
  7824 +msgid "The following upgrade is available"
7825 7825 msgstr ""
7826 7826  
7827 7827 #: i18n/templates.c:1013
7828   -msgid "The following upgrades are available:"
  7828 +msgid "The following upgrades are available"
7829 7829 msgstr ""
7830 7830  
7831 7831 #: plugins/ktcore/admin/userManagement.php:131
... ... @@ -8037,7 +8037,7 @@ msgid &quot;There are #closed# closed threads - use the \&quot;View All\&quot; option below to
8037 8037 msgstr ""
8038 8038  
8039 8039 #: i18n/templates.c:3962
8040   -msgid "There are 3 different ways in which workflows interact with the system's security:"
  8040 +msgid "There are 3 different ways in which workflows interact with the system's security"
8041 8041 msgstr ""
8042 8042  
8043 8043 #: i18n/templates.c:3086
... ... @@ -8136,7 +8136,7 @@ msgid &quot;There was an error updating the thread with the new comment&quot;
8136 8136 msgstr ""
8137 8137  
8138 8138 #: i18n/templates.c:5687
8139   -msgid "These are the results of the bulk action:"
  8139 +msgid "These are the results of the bulk action"
8140 8140 msgstr ""
8141 8141  
8142 8142 #: i18n/templates.c:1613
... ... @@ -8418,11 +8418,11 @@ msgid &quot;To add users to this role, select one or more user names in the Available
8418 8418 msgstr ""
8419 8419  
8420 8420 #: i18n/templates.c:704
8421   -msgid "To connect to #appname# via a third-party WebDAV client, please use the following address:"
  8421 +msgid "To connect to #appname# via a third-party WebDAV client, please use the following address"
8422 8422 msgstr ""
8423 8423  
8424 8424 #: i18n/templates.c:707
8425   -msgid "To connect with the #appname# Tools for Windows package, use this address:"
  8425 +msgid "To connect with the #appname# Tools for Windows package, use this address"
8426 8426 msgstr ""
8427 8427  
8428 8428 #: i18n/templates.c:5504
... ... @@ -8583,7 +8583,7 @@ msgid &quot;Transitions are what drive the workflow of documents. Each step that need
8583 8583 msgstr ""
8584 8584  
8585 8585 #: i18n/templates.c:3500 i18n/templates.c:3614
8586   -msgid "Transitions available:"
  8586 +msgid "Transitions available"
8587 8587 msgstr ""
8588 8588  
8589 8589 #: i18n/templates.c:3296
... ... @@ -8595,7 +8595,7 @@ msgid &quot;Transitions to this state&quot;
8595 8595 msgstr ""
8596 8596  
8597 8597 #: i18n/templates.c:3503 i18n/templates.c:3617
8598   -msgid "Transitions to this state:"
  8598 +msgid "Transitions to this state"
8599 8599 msgstr ""
8600 8600  
8601 8601 #: lib/documentmanagement/DocumentField.inc:168
... ... @@ -9252,7 +9252,7 @@ msgstr &quot;&quot;
9252 9252  
9253 9253 #: i18n/templates.c:4052 i18n/templates.c:4355 i18n/templates.c:4424
9254 9254 #: i18n/templates.c:4886 i18n/templates.c:4931
9255   -msgid "User:"
  9255 +msgid "User"
9256 9256 msgstr ""
9257 9257  
9258 9258 #: i18n/templates.c:443
... ... @@ -9311,7 +9311,7 @@ msgstr &quot;&quot;
9311 9311  
9312 9312 #: plugins/ktcore/admin/workflowsv2.php:1909 i18n/templates.c:4124
9313 9313 #: i18n/templates.c:4583
9314   -msgid "Users:"
  9314 +msgid "Users"
9315 9315 msgstr ""
9316 9316  
9317 9317 #: lib/documentmanagement/documentutil.inc.php:983
... ... @@ -9452,7 +9452,7 @@ msgid &quot;Want to know who all has logged in the system over a period of time? You
9452 9452 msgstr ""
9453 9453  
9454 9454 #: i18n/templates.c:3083 i18n/templates.c:4100
9455   -msgid "Warning:"
  9455 +msgid "Warning"
9456 9456 msgstr ""
9457 9457  
9458 9458 #: i18n/templates.c:4838
... ...
lib/documentmanagement/DocumentFieldLink.inc
... ... @@ -121,7 +121,7 @@ class DocumentFieldLink extends KTEntity {
121 121 *
122 122 */
123 123 function getValue() {
124   - return $this->sValue;
  124 + return sanitizeForHTML($this->sValue);
125 125 }
126 126  
127 127 /**
... ... @@ -131,7 +131,7 @@ class DocumentFieldLink extends KTEntity {
131 131 *
132 132 */
133 133 function setValue($sNewValue) {
134   - $this->sValue = $sNewValue;
  134 + $this->sValue = sanitizeForSQL($sNewValue);
135 135 }
136 136  
137 137 function _table () {
... ...
lib/documentmanagement/documentmetadataversion.inc.php
... ... @@ -97,8 +97,8 @@ class KTDocumentMetadataVersion extends KTEntity {
97 97 function setDocumentTypeId($iNewValue) { $this->iDocumentTypeId = $iNewValue; }
98 98 function getName() { return sanitizeForSQLtoHTML($this->sName); }
99 99 function setName($sNewValue) { $this->sName = sanitizeForSQL($sNewValue); }
100   - function getDescription() { return $this->sDescription; }
101   - function setDescription($sNewValue) { $this->sDescription = $sNewValue; }
  100 + function getDescription() { return sanitizeForSQLtoHTML($this->sDescription); }
  101 + function setDescription($sNewValue) { $this->sDescription = sanitizeForSQL($sNewValue); }
102 102 function getStatusId() { return $this->iStatusId; }
103 103 function setStatusId($iNewValue) { $this->iStatusId = $iNewValue; }
104 104 function getVersionCreated() { return $this->dVersionCreated; }
... ...
lib/foldermanagement/Folder.inc
... ... @@ -75,10 +75,10 @@ class Folder extends KTEntity {
75 75 // }}}
76 76  
77 77 function getID() { return $this->iId; }
78   - function getName() { return $this->sName; }
79   - function setName($sNewValue) { $this->sName = $sNewValue; }
80   - function getDescription() { return $this->sDescription; }
81   - function setDescription($sNewValue) { $this->sDescription = $sNewValue; }
  78 + function getName() { return sanitizeForSQLtoHTML($this->sName); }
  79 + function setName($sNewValue) { $this->sName = sanitizeForSQL($sNewValue); }
  80 + function getDescription() { return sanitizeForSQLtoHTML($this->sDescription); }
  81 + function setDescription($sNewValue) { $this->sDescription = sanitizeForSQL($sNewValue); }
82 82 function getParentID() { return $this->iParentID; }
83 83 function setParentID($iNewValue) { $this->iParentID = $iNewValue; }
84 84 function getCreatorID() { return $this->iCreatorID; }
... ...
lib/validation/errorviewer.inc.php
... ... @@ -132,7 +132,7 @@ $oEVRegistry-&gt;register(&quot;KTErrorViewer&quot;, &quot;PEAR_Error&quot;);
132 132  
133 133 class KTDBErrorViewer extends KTErrorViewer {
134 134 function view() {
135   - return _kt("Database error:") . " " . $this->oError->getMessage();
  135 + return _kt("Database error") . ": " . $this->oError->getMessage();
136 136 }
137 137  
138 138 function page() {
... ...
plugins/ktcore/KTColumns.inc.php
... ... @@ -72,7 +72,15 @@ class AdvancedTitleColumn extends AdvancedColumn {
72 72  
73 73  
74 74 function renderFolderLink($aDataRow) {
75   - $outStr = htmlentities($aDataRow["folder"]->getName(), ENT_NOQUOTES, 'UTF-8');
  75 + /* this check has to be done so that any titles longer than 40 characters is not displayed incorrectly.
  76 + as mozilla cannot wrap text without white spaces */
  77 + if (mb_strlen($aDataRow["folder"]->getName(), 'UTF-8') > 40) {
  78 + mb_internal_encoding("UTF-8");
  79 + $outStr = htmlentities(mb_substr($aDataRow["folder"]->getName(), 0, 40, 'UTF-8')."...", ENT_NOQUOTES, 'UTF-8');
  80 + }else{
  81 + $outStr = htmlentities($aDataRow["folder"]->getName(), ENT_NOQUOTES, 'UTF-8');
  82 + }
  83 +
76 84 if($this->link_folders) {
77 85 $outStr = '<a href="' . $this->buildFolderLink($aDataRow) . '">' . $outStr . '</a>';
78 86 }
... ... @@ -80,7 +88,7 @@ class AdvancedTitleColumn extends AdvancedColumn {
80 88 }
81 89  
82 90 function renderDocumentLink($aDataRow) {
83   - /* this chack has to be done so that any titles longer than 40 characters is not displayed incorrectly.
  91 + /* this check has to be done so that any titles longer than 40 characters is not displayed incorrectly.
84 92 as mozilla cannot wrap text without white spaces */
85 93 if (mb_strlen($aDataRow["document"]->getName(), 'UTF-8') > 40) {
86 94 mb_internal_encoding("UTF-8");
... ...
plugins/ktcore/KTDocumentActions.php
... ... @@ -824,13 +824,13 @@ class KTDocumentMoveAction extends KTDocumentAction {
824 824  
825 825 function do_main() {
826 826 $oForm = $this->form_move();
827   - return $oForm->renderPage();
  827 + return $oForm->renderPage(_kt('Move Document') . ': ' . $this->oDocument->getName());
828 828 }
829 829  
830 830 function form_move() {
831 831 $oForm = new KTForm;
832 832 $oForm->setOptions(array(
833   - 'label' => sprintf(_kt('Move Document "%s"'), $this->oDocument->getName()),
  833 + 'label' => _kt('Move Document'),
834 834 'submit_label' => _kt('Move'),
835 835 'identifier' => 'ktcore.actions.movedoc',
836 836 'action' => 'move',
... ... @@ -1031,7 +1031,7 @@ class KTDocumentCopyAction extends KTDocumentAction {
1031 1031 function form_copyselection() {
1032 1032 $oForm = new KTForm;
1033 1033 $oForm->setOptions(array(
1034   - 'label' => sprintf(_kt('Copy Document "%s"'), $this->oDocument->getName()),
  1034 + 'label' => _kt('Copy Document'),
1035 1035 'submit_label' => _kt('Copy'),
1036 1036 'identifier' => 'ktcore.actions.copydoc',
1037 1037 'action' => 'copy',
... ... @@ -1118,7 +1118,7 @@ class KTDocumentCopyAction extends KTDocumentAction {
1118 1118 function do_main() {
1119 1119 $this->oPage->setBreadcrumbDetails(_kt('Copy'));
1120 1120 $oForm = $this->form_copyselection();
1121   - return $oForm->renderPage();
  1121 + return $oForm->renderPage(_kt('Copy Document') . ': ' . $this->oDocument->getName());
1122 1122 }
1123 1123  
1124 1124 function do_copy() {
... ... @@ -1540,7 +1540,6 @@ class KTOwnershipChangeAction extends KTDocumentAction {
1540 1540  
1541 1541 $oTemplate->setData(array(
1542 1542 'context' => $this,
1543   - 'docname' => $this->oDocument->getName(),
1544 1543 'form' => $change_form,
1545 1544 ));
1546 1545 return $oTemplate->render();
... ...
plugins/ktcore/KTFolderActions.php
... ... @@ -109,7 +109,6 @@ class KTFolderAddFolderAction extends KTFolderAction {
109 109  
110 110 $oForm = $this->form_main();
111 111  
112   -
113 112 $oTemplate->setData(array(
114 113 'context' => &$this,
115 114 'form' => $oForm,
... ...
plugins/ktcore/KTPermissions.php
... ... @@ -388,7 +388,6 @@ class KTRoleAllocationPlugin extends KTFolderAction {
388 388 $aTemplateData = array(
389 389 'context' => &$this,
390 390 'roles' => $aRoles,
391   - 'foldername' => $this->oFolder->getName(),
392 391 'is_root' => ($this->oFolder->getId() == 1),
393 392 );
394 393 return $oTemplate->render($aTemplateData);
... ...
plugins/ktcore/admin/workflowsv2.php
... ... @@ -2127,19 +2127,19 @@ class KTWorkflowAdminV2 extends KTAdminDispatcher {
2127 2127  
2128 2128 $sNotify = '';
2129 2129 if (!empty($aUsers)) {
2130   - $sNotify .= '<em>' . _kt('Users:') . '</em> ';
  2130 + $sNotify .= '<em>' . _kt('Users') . ':</em> ';
2131 2131 $sNotify .= implode(', ', $aUsers);
2132 2132 }
2133 2133  
2134 2134 if (!empty($aGroups)) {
2135 2135 if (!empty($sNotify)) { $sNotify .= ' &mdash; '; }
2136   - $sNotify .= '<em>' . _kt('Groups:') . '</em> ';
  2136 + $sNotify .= '<em>' . _kt('Groups') . ':</em> ';
2137 2137 $sNotify .= implode(', ', $aGroups);
2138 2138 }
2139 2139  
2140 2140 if (!empty($aRoles)) {
2141 2141 if (!empty($sNotify)) { $sNotify .= ' &mdash; '; }
2142   - $sNotify .= '<em>' . _kt('Roles:') . '</em> ';
  2142 + $sNotify .= '<em>' . _kt('Roles') . ':</em> ';
2143 2143 $sNotify .= implode(', ', $aRoles);
2144 2144 }
2145 2145  
... ...
plugins/ktcore/document/edit.php
... ... @@ -100,7 +100,7 @@ class KTDocumentEditAction extends KTDocumentAction {
100 100 )),
101 101 );
102 102 $validators = array(
103   - array('ktcore.validators.string',array(
  103 + array('ktcore.validators.string', array(
104 104 'test' => 'document_title',
105 105 'output' => 'document_title',
106 106 )),
... ...
plugins/ktcore/folder/BulkImport.php
... ... @@ -87,7 +87,6 @@ class KTBulkImportFolderAction extends KTFolderAction {
87 87 'context' => &$this,
88 88 'add_fields' => $add_fields,
89 89 'generic_fieldsets' => $fieldsets,
90   - 'foldername' => $this->oFolder->getName(),
91 90 ));
92 91 return $oTemplate->render();
93 92 }
... ...
plugins/ktcore/folder/BulkUpload.php
... ... @@ -93,7 +93,6 @@ class KTBulkUploadFolderAction extends KTFolderAction {
93 93 'context' => &$this,
94 94 'add_fields' => $add_fields,
95 95 'generic_fieldsets' => $fieldsets,
96   - 'foldername' => $this->oFolder->getName(),
97 96 ));
98 97 return $oTemplate->render();
99 98 }
... ...
plugins/ktcore/folder/Permissions.php
... ... @@ -177,7 +177,6 @@ class KTFolderPermissionsAction extends KTFolderAction {
177 177 'edit' => $bEdit,
178 178 'inheritable' => $bInheritable,
179 179 'inherited' => $sInherited,
180   - 'foldername' => $this->oFolder->getName(),
181 180 'conditions' => $aConditions,
182 181 );
183 182 return $oTemplate->render($aTemplateData);
... ... @@ -411,14 +410,14 @@ class KTFolderPermissionsAction extends KTFolderAction {
411 410 if($bSelected) {
412 411 if(count($aPerm))
413 412 $aEntityList['g'.$oGroup->getId()] = array('type' => 'group',
414   - 'display' => _kt('Group:') . ' ' . $oGroup->getName(),
  413 + 'display' => _kt('Group') . ': ' . $oGroup->getName(),
415 414 'name' => $oGroup->getName(),
416 415 'permissions' => $aPerm,
417 416 'id' => $oGroup->getId(),
418 417 'selected' => true);
419 418 } else {
420 419 $aEntityList['g'.$oGroup->getId()] = array('type' => 'group',
421   - 'display' => _kt('Group:') . ' ' . $oGroup->getName(),
  420 + 'display' => _kt('Group') . ': ' . $oGroup->getName(),
422 421 'name' => $oGroup->getName(),
423 422 'permissions' => $aPerm,
424 423 'id' => $oGroup->getId());
... ... @@ -435,14 +434,14 @@ class KTFolderPermissionsAction extends KTFolderAction {
435 434 if($bSelected) {
436 435 if(count($aPerm))
437 436 $aEntityList['r'.$oRole->getId()] = array('type' => 'role',
438   - 'display' => _kt('Role:') . ' ' . $oRole->getName(),
  437 + 'display' => _kt('Role') . ': ' . $oRole->getName(),
439 438 'name' => $oRole->getName(),
440 439 'permissions' => $aPerm,
441 440 'id' => $oRole->getId(),
442 441 'selected' => true);
443 442 } else {
444 443 $aEntityList['r'.$oRole->getId()] = array('type' => 'role',
445   - 'display' => _kt('Role:') . ' ' . $oRole->getName(),
  444 + 'display' => _kt('Role') . ': ' . $oRole->getName(),
446 445 'name' => $oRole->getName(),
447 446 'permissions' => $aPerm,
448 447 'id' => $oRole->getId());
... ...
plugins/ktcore/folder/Rename.php
... ... @@ -60,7 +60,7 @@ class KTFolderRenameAction extends KTFolderAction {
60 60 $oTemplate->setData(array(
61 61 'context' => &$this,
62 62 'fields' => $fields,
63   - 'sFolderName' => $this->oFolder->getName(),
  63 + 'folderName' => $this->oFolder->getName(),
64 64 ));
65 65 return $oTemplate->render();
66 66 }
... ... @@ -87,7 +87,7 @@ class KTFolderRenameAction extends KTFolderAction {
87 87 }
88 88 }
89 89  
90   - $res = KTDocumentUtil::rename($this->oDocument, sanitize($sFilename), $this->oUser);
  90 + $res = KTFolderUtil::rename($this->oFolder, sanitize($sFolderName), $this->oUser);
91 91 if (PEAR::isError($res)) {
92 92 $_SESSION['KTErrorMessage'][] = $res->getMessage();
93 93 redirect(KTBrowseUtil::getUrlForFolder($this->oFolder));
... ...
plugins/ktcore/folder/Transactions.php
... ... @@ -50,8 +50,6 @@ class KTFolderTransactionsAction extends KTFolderAction {
50 50 $this->oPage->setBreadcrumbDetails(_kt("transactions"));
51 51 $this->oPage->setTitle(_kt('Folder transactions'));
52 52  
53   - // $oTemplate =& $this->oValidator->validateTemplate('ktcore/folder/transactions');
54   -
55 53 $folder_data = array();
56 54 $folder_data["folder_id"] = $this->oFolder->getId();
57 55  
... ...
plugins/ktcore/folder/addDocument.php
... ... @@ -143,12 +143,8 @@ class KTFolderAddDocumentAction extends KTFolderAction {
143 143  
144 144 function do_main() {
145 145 $this->oPage->setBreadcrumbDetails(_kt("Add a document"));
146   - $this->oPage->setTitle(_kt('Add a document'));
147   -
148   - $oTemplate =& $this->oValidator->validateTemplate('ktcore/document/add');
149   -
150 146 $oForm = $this->form_initialdata();
151   - return $oForm->render();
  147 + return $oForm->renderPage(_kt('Add a document to: ') . $this->oFolder->getName());
152 148 }
153 149  
154 150 function do_processInitialData() {
... ...
plugins/ktstandard/KTDocumentLinks.php
... ... @@ -150,7 +150,6 @@ class KTDocumentLinkAction extends KTDocumentAction {
150 150 $oReadPermission =& KTPermission::getByName('ktcore.permissions.read');
151 151 $oWritePermission =& KTPermission::getByName('ktcore.permissions.write');
152 152  
153   -
154 153 $aTemplateData = array(
155 154 'context' => $this,
156 155 'links_from' => DocumentLink::getLinksFromDocument($oDocument->getId()),
... ...
plugins/ktstandard/KTEmail.php
... ... @@ -141,7 +141,7 @@ function sendEmailDocument($sDestEmailAddress, $sDestUserName, $iDocumentID, $sD
141 141 $sMessage .= sprintf(_kt("Your colleague, %s, wishes you to view the attached document entitled '%s'."), $oSendingUser->getName(), $sDocumentName);
142 142 $sMessage .= "\n\n";
143 143 if (strlen($sComment) > 0) {
144   - $sMessage .= '<br><br>' . _kt('Comments:') . '<br>' . $sComment;
  144 + $sMessage .= '<br><br>' . _kt('Comments') . ':<br>' . $sComment;
145 145 }
146 146 $sTitle = sprintf(_kt("Document: %s from %s"), $sDocumentName, $oSendingUser->getName());
147 147  
... ... @@ -202,7 +202,7 @@ function sendEmailHyperlink($sDestEmailAddress, $sDestUserName, $iDocumentID, $s
202 202 $sMessage .= '<br>' . generateControllerLink('viewDocument', "fDocumentID=$iDocumentID", $sDocumentName, true);
203 203 // add optional comment
204 204 if (strlen($sComment) > 0) {
205   - $sMessage .= '<br><br>' . _kt('Comments:') . '<br>' . $sComment;
  205 + $sMessage .= '<br><br>' . _kt('Comments') . ':<br>' . $sComment;
206 206 }
207 207 $sMessage .= '</font>';
208 208 $sTitle = sprintf(_kt("Link: %s from %s"), $sDocumentName, $oSendingUser->getName());
... ...
plugins/rssplugin/RSSFolderLinkAction.php
... ... @@ -68,6 +68,7 @@ class RSSFolderLinkAction extends KTFolderAction {
68 68 'context' => $this,
69 69 'link' => KTrss::getRssLink($iFId, 'folder'),
70 70 'linkIcon' => KTrss::getImageLink($iFId, 'folder'),
  71 + 'folderName' => $this->oFolder->getName(),
71 72 );
72 73  
73 74 return $oTemplate->render($aTemplateData);
... ...
plugins/rssplugin/templates/RSSPlugin/rssdocumentaction.smarty
1   -<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>Document RSS</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}RSS for Document{/i18n}:<br />{$context->oDocument->getName()}</h2>
  2 +
2 3 <p>
3 4 You can copy the following link into any RSS aggregator to create a feed to the selected document.
4 5 <ul>
5 6 <li>{$link}</li>
6 7 </ul>
7   -Another way of quickly accessing a RSS feed for a document of folder is by RSS icon {$linkIcon},
8   -which you will find in your actions portlet on the left.
  8 +{i18n}Another way of quickly accessing a RSS feed for a document or folder is by RSS icon {$linkIcon},
  9 +which you will find in your actions portlet on the left.{/i18n}
9 10 </p>
10 11 \ No newline at end of file
... ...
plugins/rssplugin/templates/RSSPlugin/rssfolderaction.smarty
1   -<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>Folder RSS</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}RSS for folder{/i18n}: {$context->oFolder->getName()}</h2>
2 2 <p>
3 3 You can copy the following link into any RSS aggragator to create a feed to the selected folder.
4 4 <ul>
... ...
templates/kt3/browse.smarty
... ... @@ -13,7 +13,7 @@
13 13 <div class="collapsiblebody">
14 14 {assign var=mainjoin value=$joins.main}
15 15  
16   -<p class="descriptiveText">{i18n arg_join=$mainjoin}Match <b>#join#</b> of the following:{/i18n}</p>
  16 +<p class="descriptiveText">{i18n arg_join=$mainjoin}Match <b>#join#</b> of the following{/i18n}:</p>
17 17 {foreach from=$params key=key item=group}
18 18 {assign var=join value=$joins[$key]}
19 19  
... ...
templates/kt3/document/edit.smarty
... ... @@ -11,7 +11,7 @@
11 11  
12 12 {$context->oPage->requireCSSResource('resources/css/kt-treewidget.css')}
13 13  
14   -<h2>{i18n}Editing{/i18n}: {$document->getName()}</h2>
  14 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Edit Metadata{/i18n}:<br />{$context->oDocument->getName()}</h2>
15 15  
16 16 {capture assign=link}{addQS}action=selectType&fDocumentId={$document->getId()}{/addQS}{/capture}
17 17 <p class="descriptiveText">{i18n arg_link=$link}Change the <strong><a href="#link#">document type</a></strong>{/i18n}</p>
... ...
templates/kt3/view_folder_history.smarty
1   -<h2>{i18n}Transaction History{/i18n}: {$folder->getName()}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Folder Transaction History{/i18n}:<br />{$folder->getName()}</h2>
2 2  
3 3 <p class="descriptiveText">{i18n}This page provides details of all activities that have been carried out on the folder.{/i18n}</p>
4 4  
... ...
templates/ktcore/action/addFolder.smarty
1   -<h2>{i18n}Add a folder{/i18n}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Add a folder to{/i18n}:<br />{$context->oFolder->getName()}</h2>
2 2  
3 3 <p class="descriptiveText">{i18n}Folders are one way of organising documents
4 4 in the document management system. Folders provide meaning in the
... ...
templates/ktcore/action/archive.smarty
1   -<h2>{i18n arg_docname=$context->oDocument->getName()}Archive Document: #docname#{/i18n}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Archive Document{/i18n}:<br />{$context->oDocument->getName()}</h2>
2 2  
3 3 <p class="descriptiveText">{i18n}Archiving a document changes the
4 4 document's state to invisible to non-administrative users. Only an
... ...
templates/ktcore/action/assistance.smarty
1   -<h2>{i18n arg_docname=$context->oDocument->getName()}Request Assistance: #docname#{/i18n}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Request Assistance{/i18n}:<br />{$context->oDocument->getName()}</h2>
  2 +
2 3  
3 4 <p class="descriptiveText">{i18n}If you are unable to perform an action
4 5 on this document that you think you should be able to, or wish to
... ...
templates/ktcore/action/cancel_checkout.smarty
1   -<h2>{i18n arg_docname=$context->oDocument->getName()}Cancel Checkout: #docname#{/i18n}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Cancel Checkout{/i18n}:<br />{$context->oDocument->getName()}</h2>
2 2  
3 3  
4 4 <p class="descriptiveText">{i18n}If you do not want to have this document be checked-out,
... ...
templates/ktcore/action/checkin.smarty
1   -<h2>{i18n arg_docname=$context->oDocument->getName()}Checkin Document: #docname#{/i18n}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Checkin Document{/i18n}:<br />{$context->oDocument->getName()}</h2>
  2 +
2 3  
3 4 <p class="descriptiveText">{i18n}Checking in a document updates the document
4 5 and allows others to make changes to the document and its metadata.{/i18n}</p>
... ...
templates/ktcore/action/checkout.smarty
1   -<h2>{i18n arg_docname=$context->oDocument->getName()}Checkout Document: #docname#{/i18n}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Checkout Document{/i18n}:<br />{$context->oDocument->getName()}</h2>
2 2  
3 3 <p class="descriptiveText">{i18n}Checking out a document reserves it for your
4 4 exclusive use. This ensures that you can edit the document without
... ...
templates/ktcore/action/checkout_final.smarty
... ... @@ -16,6 +16,8 @@ addLoadEvent(scheduleCheckout);
16 16 {/capture}
17 17 {$context->oPage->requireJSStandalone($sJavascript)}
18 18  
  19 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Checkout Document{/i18n}:<br />{$context->oDocument->getName()}</h2>
  20 +
19 21 {capture assign=link}{$sLocation|addQSSelf}{/capture}
20 22 <p class="descriptiveText">{i18n arg_link=$link}The document you wish to
21 23 check out will begin to download soon. If it does not automatically
... ...
templates/ktcore/action/copy.smarty
1   -<h2>{i18n}Copy document{/i18n}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Copy document{/i18n}: {$documentName}</h2>
2 2  
3 3 {assign var=iDocumentId value=$context->oDocument->getId()}
4 4  
... ...
templates/ktcore/action/copy_final.smarty
1   -<h2>{i18n}Copy document{/i18n}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Copy document{/i18n}: {$documentName}</h2>
2 2  
3 3 {assign var=iDocumentId value=$context->oDocument->getId()}
4 4  
... ...
templates/ktcore/action/delete.smarty
1   -<h2>{i18n arg_docname=$context->oDocument->getName()}Delete Document: #docname#{/i18n}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Delete Document{/i18n}:<br />{$context->oDocument->getName()}</h2>
2 2  
3 3 <p class="descriptiveText">{i18n}Deleting a document marks it as no longer
4 4 being displayed. The document management system does not remove the
... ...
templates/ktcore/action/move_final.smarty
1   -<h2>{i18n arg_docname=$context->oDocument->getName()}Checkin Document: #docname#{/i18n}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Move Document{/i18n}:<br />{$context->oDocument->getName()}</h2>
2 2  
3   -<p class="descriptiveText">{i18n}Moving a document relocates the document
4   -within the DMS.{/i18n}</p>
  3 +<p class="descriptiveText">{i18n}Moving a document relocates the document within the DMS.{/i18n}</p>
5 4  
6 5 {$form->render()}
... ...
templates/ktcore/action/rename.smarty
1   -<h2>{i18n}Rename document{/i18n}</h2>
  1 +<h2>{i18n}Rename document{/i18n}: {$documentName}</h2>
2 2 <p class="descriptiveText">{i18n}This page allows you to rename the file
3 3 name (not the document title) for a document.{/i18n}</p>
4 4  
... ...
templates/ktcore/action/view_roles.smarty
1   -<h2>{i18n}View Roles{/i18n}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}View Roles{/i18n}:<br />{$context->oDocument->getName()}</h2>
2 2  
3 3 <p class="descriptiveText">{i18n}
4 4 In many cases, workflow actions will be assigned to certain <strong>roles</strong>
... ... @@ -22,8 +22,8 @@
22 22 <tr class="{cycle values=odd,even}">
23 23 <td>{$aRole.name}</td>
24 24 <td>
25   - {if ($aRole.users != null)}<strong>{i18n}Users:{/i18n}</strong> {$aRole.users}<br />{/if}
26   - {if ($aRole.groups != null)}<strong>{i18n}Groups:{/i18n}</strong> {$aRole.groups}{/if}
  25 + {if ($aRole.users != null)}<strong>{i18n}Users{/i18n}:</strong> {$aRole.users}<br />{/if}
  26 + {if ($aRole.groups != null)}<strong>{i18n}Groups{/i18n}:</strong> {$aRole.groups}{/if}
27 27 </td>
28 28 </tr>
29 29 {/foreach}
... ...
templates/ktcore/bulk_action_complete.smarty
1   -<h2>{$context->getDisplayName()}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{$context->getDisplayName()}</h2>
2 2  
3   -<p class="descriptiveText">{i18n}These are the results of the bulk action:{/i18n}</p>
  3 +<p class="descriptiveText">{i18n}These are the results of the bulk action{/i18n}:</p>
4 4  
5 5 {if count($list.folders)}
6 6 <table class="kt_collection">
... ...
templates/ktcore/bulk_action_listing.smarty
1   -<h2>{$context->getDisplayName()}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{$context->getDisplayName()}</h2>
2 2  
3   -<p class="descriptiveText">{i18n}The following list shows documents and folders in your list which cannot be acted on by this bulk action:{/i18n}</p>
  3 +<p class="descriptiveText">{i18n}The following list shows documents and folders in your list which cannot be acted on by this bulk action{/i18n}:</p>
4 4  
5 5 {if count($failed.folders)}
6 6 <table class="kt_collection">
... ... @@ -53,7 +53,7 @@
53 53  
54 54  
55 55 {if (count($documents) || count($folders))}
56   -<p class="descriptiveText">{i18n}The action will be performed on the following documents and folders:{/i18n}</p>
  56 +<p class="descriptiveText">{i18n}The action will be performed on the following documents and folders{/i18n}:</p>
57 57  
58 58 {if (count($folders))}
59 59 <h3>{i18n}Folders{/i18n}</h3>
... ...
templates/ktcore/dashlets/indexer_status.smarty
... ... @@ -2,7 +2,7 @@
2 2 <div class="ktError">
3 3 <div class="error_dashlet_rightrepeat_bottom"></div>
4 4 <div class="error_dashlet_leftrepeat_bottom"></div>
5   - <p><strong>{i18n}Warning:{/i18n}</strong> {i18n}There are currently no active indexers registered. No content indexing will occur.{/i18n}</p>
  5 + <p><strong>{i18n}Warning{/i18n}:</strong> {i18n}There are currently no active indexers registered. No content indexing will occur.{/i18n}</p>
6 6 <div class="error_dashlet_topleft_small"></div>
7 7 <div class="error_dashlet_toprepeat_small"></div>
8 8 <div class="error_dashlet_topright_small"></div>
... ...
templates/ktcore/document/compare.smarty
1   -<h2>{i18n}Version Comparison{/i18n}: {$document->getName()}</h2>
2   -
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Version Comparison{/i18n}:<br />{$context->oDocument->getName()}</h2>
3 2  
4 3 {capture assign=from}
5 4 <strong>{$document->getMajorVersionNumber()}.{$document->getMinorVersionNumber()}</strong> ({$document->getMetadataVersion()})
... ...
templates/ktcore/document/comparison_version_select.smarty
1   -<h2>{i18n}Select Document Version to compare against{/i18n}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Select Document Version to compare against{/i18n}</h2>
2 2  
3 3 <p class="descriptiveText">{i18n}This page lists versions of document metadata and allows you to compare a metadata version with the current metadata content.{/i18n}</p>
4 4  
... ...
templates/ktcore/document/document_permissions.smarty
1   -<h2>{i18n}Document permissions{/i18n}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Document permissions{/i18n}:<br />{$context->oDocument->getName()}</h2>
2 2  
3 3 <p class="descriptiveText">{i18n}This page shows the permissions that apply to
4 4 this specific document. Where the folder view shows you information by role and group,
... ... @@ -29,7 +29,7 @@ permissions are not shown.{/i18n}&lt;/p&gt;
29 29 <tbody>
30 30  
31 31 { foreach item=oRole from=$roles }
32   -<td><span class="descriptiveText">{i18n}Role:{/i18n}</span> {$oRole->getName()}</td>
  32 +<td><span class="descriptiveText">{i18n}Role{/i18n}:</span> {$oRole->getName()}</td>
33 33 { assign var=iRoleId value=$oRole->getId() }
34 34 { foreach item=oPerm from=$permissions }
35 35 { assign var=iPermId value=$oPerm->getId() }
... ... @@ -46,7 +46,7 @@ permissions are not shown.{/i18n}&lt;/p&gt;
46 46  
47 47  
48 48 { foreach item=oGroup from=$groups }
49   -<td><span class="descriptiveText">{i18n}Group:{/i18n}</span> {$oGroup->getName()}</td>
  49 +<td><span class="descriptiveText">{i18n}Group{/i18n}:</span> {$oGroup->getName()}</td>
50 50 { assign var=iGroupId value=$oGroup->getId() }
51 51 { foreach item=oPerm from=$permissions }
52 52 { assign var=iPermId value=$oPerm->getId() }
... ...
templates/ktcore/document/edit.smarty
... ... @@ -11,7 +11,7 @@
11 11  
12 12 {$context->oPage->requireCSSResource('resources/css/kt-treewidget.css')}
13 13  
14   -<h2>{i18n}Editing{/i18n}: {$document->getName()|mb_wordwrap:40:"<br />\n":true}</h2>
  14 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Edit Metadata{/i18n}:<br />{$context->oDocument->getName()}</h2>
15 15  
16 16 {capture assign=link}{addQS}action=selectType&fDocumentId={$document->getId()}{/addQS}{/capture}
17 17 <p class="descriptiveText">{i18n arg_link=$link arg_name=$type_name}Change the <strong><a href="#link#">document type</a></strong>. The current type is "#name#"{/i18n}</p>
... ...
templates/ktcore/document/metadata_history.smarty
1   -<h2>{i18n}Version History{/i18n}: {$document->getName()}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Document Version History{/i18n}:<br />{$document->getName()}</h2>
2 2  
3 3 <p class="descriptiveText">{i18n}This page lists versions of document metadata and allows you to compare a metadata version with the current metadata content.{/i18n}</p>
4 4  
... ...
templates/ktcore/document/ownershipchangeaction.smarty
1   -<h2>{i18n arg_docname=$docname}Change Ownership of "#docname#"{/i18n}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Change Ownership{/i18n}:<br />{$context->oDocument->getName()}</h2>
2 2  
3 3 {$form->render()}
... ...
templates/ktcore/document/resolved_permissions_user.smarty
1   -<h2>{i18n}Resolved permissions per user{/i18n}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Resolved permissions per user{/i18n}:<br />{$context->oDocument->getName()}</h2>
2 2  
3 3 <p class="descriptiveText">{i18n}This page shows the permissions that
4 4 individual users have on this document. Only the users which have permissions
... ...
templates/ktcore/document/transaction_history.smarty
1   -<h2>{i18n}Transaction History{/i18n}: {$document->getName()}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Document Transaction History{/i18n}:<br />{$document->getName()}</h2>
2 2  
3 3 <p class="descriptiveText">{i18n}This page provides details of all activities that have been carried out on the document.{/i18n}</p>
4 4  
... ...
templates/ktcore/document/view.smarty
1   -<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{$document->getName()|mb_wordwrap:40:"<br />\n":true}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Document Details{/i18n}:<br />{$context->oDocument->getName()}</h2>
2 2  
3 3 {if ($document->getIsCheckedOut() == 1)}
4 4 {capture assign=checkout_user}<strong>{$sCheckoutUser}</strong>{/capture}
... ...
templates/ktcore/fields/edit.smarty
1   -<h2>{i18n}Fieldset{/i18n}: {$oFieldset->getName()}</h2>
2   -
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Fieldset{/i18n}:<br />{$oFieldset->getName()}</h2>
3 2  
4 3 <form action="{$smarty.server.PHP_SELF}" method="POST">
5 4 <fieldset>
... ...
templates/ktcore/folder/bulkImport.smarty
... ... @@ -54,7 +54,7 @@ addLoadEvent(startupMetadata);
54 54 {/capture}
55 55 {$context->oPage->requireJSStandalone($sJavascript)}
56 56  
57   -<h2>{i18n arg_foldername=$foldername}Import files into "#foldername#"{/i18n}</h2>
  57 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Import files into{/i18n}:<br />{$context->oFolder->getName()}</h2>
58 58  
59 59 <form method="POST" action="{$smarty.server.PHP_SELF}" enctype="multipart/form-data">
60 60 <fieldset><legend>{i18n}Import from Server Location{/i18n}</legend>
... ...
templates/ktcore/folder/bulkUpload.smarty
... ... @@ -54,7 +54,7 @@ addLoadEvent(startupMetadata);
54 54 {/capture}
55 55 {$context->oPage->requireJSStandalone($sJavascript)}
56 56  
57   -<h2>{i18n arg_foldername=$foldername}Upload files into "#foldername#"{/i18n}</h2>
  57 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Upload files into{/i18n}:<br />{$context->oFolder->getName()}</h2>
58 58  
59 59 <form method="POST" action="{$smarty.server.PHP_SELF|addQueryString:"postExpected=1&fFolderId="}{$context->oFolder->getId()}" enctype="multipart/form-data">
60 60 <fieldset><legend>{i18n}Bulk upload{/i18n}</legend>
... ...
templates/ktcore/folder/rename.smarty
1   -<h2>{i18n arg_name=$sFolderName}Renaming folder: #name#{/i18n}</h2>
  1 +<h2>{i18n}Rename Folder{/i18n}: {$folderName}</h2>
2 2  
3 3 </h2><p class="descriptiveText">{i18n}This page allows you to rename a
4 4 folder.{/i18n}</p>
... ... @@ -7,7 +7,7 @@ folder.{/i18n}&lt;/p&gt;
7 7 {capture assign=link}{getUrlForFolder folder=$iFolderId}{/capture}
8 8  
9 9 <form method="POST" action="{$smarty.server.PHP_SELF}">
10   -<fieldset><legend>{i18n}Rename{/i18n}</legend>
  10 +<fieldset><legend>{i18n}Rename Folder{/i18n}</legend>
11 11 <input type="hidden" name="action" value="rename" />
12 12 <input type="hidden" name="fFolderId" value="{$iFolderId}" />
13 13 {foreach from=$fields item=oWidget }
... ...
templates/ktcore/folder/resolved_permissions.smarty
... ... @@ -23,7 +23,7 @@ assigned are shown.{/i18n}&lt;/p&gt;
23 23 <tbody>
24 24  
25 25 { foreach item=oRole from=$roles }
26   -<td><span class="descriptiveText">{i18n}Role:{/i18n}</span> {$oRole->getName()}</td>
  26 +<td><span class="descriptiveText">{i18n}Role{/i18n}:</span> {$oRole->getName()}</td>
27 27 { assign var=iRoleId value=$oRole->getId() }
28 28 { foreach item=oPerm from=$permissions }
29 29 { assign var=iPermId value=$oPerm->getId() }
... ... @@ -50,7 +50,7 @@ value=&quot;{$iRoleId}&quot;&gt;&lt;/td&gt;
50 50  
51 51  
52 52 { foreach item=oGroup from=$groups }
53   -<td><span class="descriptiveText">{i18n}Group:{/i18n}</span> {$oGroup->getName()}</td>
  53 +<td><span class="descriptiveText">{i18n}Group{/i18n}:</span> {$oGroup->getName()}</td>
54 54 { assign var=iGroupId value=$oGroup->getId() }
55 55 { foreach item=oPerm from=$permissions }
56 56 { assign var=iPermId value=$oPerm->getId() }
... ...
templates/ktcore/folder/resolved_permissions_user.smarty
1   -<h2>{i18n arg_foldername=$foldername}Resolved permissions per user for "#foldername#"{/i18n}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Resolved permissions per user{/i18n}: {$context->oFolder->getName()}</h2>
2 2  
3 3 <p class="descriptiveText">{i18n}This page shows the permissions that
4 4 individual users have on this folder. Only the users which have permissions
... ...
templates/ktcore/folder/roles.smarty
1   -<h2>{i18n arg_foldername=$foldername}Allocate Roles for "#foldername#"{/i18n}</h2>
  1 +<h2>{i18n}Allocate Roles for{/i18n}: {$folderName}</h2>
2 2  
3 3 <p class="descriptiveText">{i18n}
4 4 In many cases, workflow actions will be assigned to certain <strong>roles</strong>
... ... @@ -6,7 +6,7 @@
6 6 to specific groups in particular areas of the document management system.
7 7 {/i18n}</p>
8 8  
9   -<div class='ktInfoMessage'><span><strong>{i18n}Warning:{/i18n}</strong> {i18n}Please note that changing
  9 +<div class='ktInfoMessage'><span><strong>{i18n}Warning{/i18n}:</strong> {i18n}Please note that changing
10 10 role allocations may take a some time, depending on the number of folders below this one.{/i18n}</span></div>
11 11  
12 12 <table class="kt_collection narrow" cellspacing="0">
... ... @@ -29,8 +29,8 @@ role allocations may take a some time, depending on the number of folders below
29 29 <strong>{i18n}inherited from parent folder.{/i18n}</strong><br />
30 30 <span class="descriptiveText">
31 31 {/if}
32   - {if ($aRole.users != null)}<strong>{i18n}Users:{/i18n}</strong> {$aRole.users}<br />{/if}
33   - {if ($aRole.groups != null)}<strong>{i18n}Groups:{/i18n}</strong> {$aRole.groups}{/if}
  32 + {if ($aRole.users != null)}<strong>{i18n}Users{/i18n}:</strong> {$aRole.users}<br />{/if}
  33 + {if ($aRole.groups != null)}<strong>{i18n}Groups{/i18n}:</strong> {$aRole.groups}{/if}
34 34 {if ($aRole.allocation_id === null)}
35 35 </span class="descriptiveText">
36 36 {/if}
... ...
templates/ktcore/folder/view_permissions.smarty
1   -<h2>{i18n arg_foldername=$foldername}View Permissions for "#foldername#"{/i18n}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}View Permissions for{/i18n}:<br />{$context->oFolder->getName()}</h2>
2 2  
3 3 <p class="descriptiveText">{i18n}This page shows the permissions that apply to
4 4 this specific folder. Only the roles or groups which have permissions
... ... @@ -13,19 +13,21 @@ assigned are shown.{/i18n}&lt;/p&gt;
13 13  
14 14  
15 15 {if $iFolderId != 1}
  16 +<p>
16 17 <div class="ktInfoMessage">
17 18 { if $inherited }
18   -<p>{i18n arg_permission_source=$inherited}This folder <strong>inherits</strong> its permissions from #permission_source#.{/i18n}
  19 +<span>{i18n arg_permission_source=$inherited}This folder <strong>inherits</strong> its permissions from #permission_source#.{/i18n}
19 20 {if $inheritable}
20 21 <a class="ktActionLink ktDelete"
21 22 kt:deleteMessage="{i18n}Are you sure you wish to override the permissions?{/i18n}"
22 23 href="{addQS}action=edit&fFolderId={$oFolder->getId()}&override=1{/addQS}">{i18n}Override permissions{/i18n}</a>
23 24 {/if}
24   -</p>
  25 +</span>
25 26 { else }
26 27 <p>{i18n}This folder defines its own permissions.{/i18n}</p>
27 28 { /if }
28 29 </div>
  30 +</p>
29 31 { /if }
30 32  
31 33 {if (empty($roles) && empty($groups) && empty($users)) }
... ... @@ -44,7 +46,7 @@ assigned are shown.{/i18n}&lt;/p&gt;
44 46 <tbody>
45 47  
46 48 { foreach item=oRole from=$roles }
47   -<td><span class="descriptiveText">{i18n}Role:{/i18n}</span> {$oRole->getName()}</td>
  49 +<td><span class="descriptiveText">{i18n}Role{/i18n}:</span> {$oRole->getName()}</td>
48 50 { assign var=iRoleId value=$oRole->getId() }
49 51 { foreach item=oPerm from=$permissions }
50 52 { assign var=iPermId value=$oPerm->getId() }
... ... @@ -61,7 +63,7 @@ assigned are shown.{/i18n}&lt;/p&gt;
61 63  
62 64  
63 65 { foreach item=oGroup from=$groups }
64   -<td><span class="descriptiveText">{i18n}Group:{/i18n}</span> {$oGroup->getName()}</td>
  66 +<td><span class="descriptiveText">{i18n}Group{/i18n}:</span> {$oGroup->getName()}</td>
65 67 { assign var=iGroupId value=$oGroup->getId() }
66 68 { foreach item=oPerm from=$permissions }
67 69 { assign var=iPermId value=$oPerm->getId() }
... ...
templates/ktcore/metadata/admin/edit_lookuptree.smarty
... ... @@ -3,7 +3,7 @@
3 3 {$context->oPage->requireJSResource("thirdpartyjs/MochiKit/Iter.js")}
4 4 {$context->oPage->requireJSResource("thirdpartyjs/MochiKit/DOM.js")}
5 5  
6   -<h2>{i18n}Edit Lookup Tree{/i18n}: {$field->getName()}</h2>
  6 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Edit Lookup Tree{/i18n}:<br />{$field->getName()}</h2>
7 7  
8 8 <p class="descriptiveText">{i18n}Many "lookup" fields make sense in a hierachy:
9 9 countries are part of continents and sub-continents, school classes are part of grades
... ...
templates/ktcore/metadata/admin/manage_lookups.smarty
... ... @@ -6,7 +6,7 @@
6 6 <p class="descriptiveText">{i18n}Over time, the lookup values which make sense will
7 7 change and evolve as your organisation does. You may thus need to change the lookup
8 8 values associated with a given field. There are a number of different states
9   -that are possible for a given lookup:{/i18n}</p>
  9 +that are possible for a given lookup{/i18n}:</p>
10 10  
11 11 <ul class="descriptiveText">
12 12 <li>{i18n}<strong>Enabled</strong>, which means that users cannot specify this
... ...
templates/ktcore/metadata/edit.smarty
1   -<h2>{i18n}Fieldset{/i18n}: {$oFieldset->getName()}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Fieldset{/i18n}:<br />{$oFieldset->getName()}</h2>
2 2  
3 3 <h3>{i18n}Fieldset properties{/i18n}</h3>
4 4 <form action="{$smarty.server.PHP_SELF}" method="POST">
... ...
templates/ktcore/metadata/editField.smarty
1   -<h2>{i18n}Edit Field{/i18n}: {$oField->getName()}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Edit Field{/i18n}:<br />{$oField->getName()}</h2>
2 2  
3 3 <form action="{$smarty.server.PHP_SELF}" method="POST">
4 4 <fieldset>
... ...
templates/ktcore/metadata/editFieldset.smarty
1   -<h2>{i18n}Fieldset{/i18n}: {$oFieldset->getName()}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Fieldset{/i18n}:<br />{$oFieldset->getName()}</h2>
2 2  
3 3 {if $sIncomplete}
4 4 <div class="ktErrorMessage">
... ...
templates/ktcore/workflow/admin/security_overview.smarty
... ... @@ -6,7 +6,7 @@ way to allocate permissions to a document, since it can override the permissions
6 6 assigned at a folder level.{/i18n}</p>
7 7  
8 8 <p class="descriptiveText">{i18n}There are 3 different ways in which workflows interact
9   -with the system's security:{/i18n}</p>
  9 +with the system's security{/i18n}:</p>
10 10  
11 11 <ol>
12 12 <li><a href="{addQS context=$context}action=permissionsoverview{/addQS}">{i18n}Document Permissions{/i18n}</a> {i18n}(by state){/i18n}</li>
... ...
templates/ktcore/workflow/documentWorkflow.smarty
1   -<h2>{i18n}Document Workflow{/i18n}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Workflow for{/i18n}:<br />{$oDocument->getName()}</h2>
2 2  
3 3 <p class="descriptiveText">
4 4 {i18n}Workflow is a description of a document's lifecycle. It is made up of
... ...
templates/ktcore/workflow/editState.smarty
... ... @@ -20,7 +20,7 @@ td.false { background-color: #ffaaaa; text-align: centre }
20 20 {/literal}{/capture}
21 21 {$context->oPage->requireCSSStandalone($sCSS)}
22 22  
23   -<h2>{i18n}State{/i18n}: {$oState->getName()}</h2>
  23 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}State{/i18n}:<br />{$oState->getName()}</h2>
24 24  
25 25 <p class="descriptiveText">{i18n}As documents move through their lifecycle, they
26 26 are placed in certain <strong>states</strong>. For example, an invoice
... ... @@ -198,7 +198,7 @@ documents are in this state.{/i18n}&lt;/span&gt;&lt;/div&gt;
198 198 <tbody>
199 199 { foreach item=oRole from=$aRoles }
200 200 <tr>
201   - <td><span class="descriptiveText">{i18n}Role:{/i18n} </span>{$oRole->getName()}</td>
  201 + <td><span class="descriptiveText">{i18n}Role{/i18n}: </span>{$oRole->getName()}</td>
202 202 { foreach from=$state_permissions item=sPermName }
203 203 <td><input type="checkbox" name="fPermissions[{$sPermName}][role][]" value="{$oRole->getId()}" {if ($context->getRoleHasPermissionInState($oRole, $sPermName, $oState))}checked="true"{/if}/></td>
204 204 { /foreach }
... ... @@ -206,7 +206,7 @@ documents are in this state.{/i18n}&lt;/span&gt;&lt;/div&gt;
206 206 { /foreach }
207 207 { foreach item=oGroup from=$aGroups }
208 208 <tr>
209   - <td><span class="descriptiveText">{i18n}Group:{/i18n} </span>{$oGroup->getName()}</td>
  209 + <td><span class="descriptiveText">{i18n}Group{/i18n}: </span>{$oGroup->getName()}</td>
210 210 { foreach from=$state_permissions item=sPermName }
211 211 <td><input type="checkbox" name="fPermissions[{$sPermName}][group][]" value="{$oGroup->getId()}"{if ($context->getGroupHasPermissionInState($oGroup, $sPermName, $oState))}checked="true"{/if}/></td>
212 212 { /foreach }
... ...
templates/ktcore/workflow/editTransition.smarty
1   -<h2>{i18n}Transition{/i18n}: {$oTransition->getName()}</h2>
2   -
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Transition{/i18n}:<br />{$oTransition->getName()}</h2>
3 2  
4 3 <form action="{$smarty.server.PHP_SELF}" method="POST">
5 4 <fieldset>
... ...
templates/ktcore/workflow/editWorkflow.smarty
1 1 {$context->oPage->requireCSSResource('resources/css/workflow-admin.css')}
2 2  
3   -<h2>{i18n}Workflow Overview{/i18n}: {$oWorkflow->getName()}</h2>
  3 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Workflow Overview{/i18n}:<br />{$oWorkflow->getName()}</h2>
  4 +
4 5  
5 6 <form action="{$smarty.server.PHP_SELF}" method="POST">
6 7 <fieldset>
... ... @@ -30,21 +31,21 @@ or use the &quot;Workflow&quot; menu on the left to create new ones.{/i18n}&lt;/p&gt;
30 31 <li><span class="workflow_element">{i18n}State{/i18n}:</span> <a href="{addQS}action=editState&fStateId={$oState->getId()}&fWorkflowId={$oWorkflow->getId()}{/addQS}" class="workflow_label">{$oState->getName()}</a>
31 32 {if ($workflow_info.can_delete)} | <span class="ktActionLink ktDelete"><a href="{addQS}action=deleteState&fStateId={$oState->getId()}&fWorkflowId={$oWorkflow->getId()}{/addQS}" >{i18n}Delete{/i18n}</a></span>{/if}
32 33 <ul>
33   - <li>{i18n}Notified groups & roles:{/i18n}
  34 + <li>{i18n}Notified groups & roles{/i18n}:
34 35 {$context->getNotificationStringForState($oState)}
35 36 </li>
36 37  
37   - <li>{i18n}Controlled Actions available: {/i18n}
  38 + <li>{i18n}Controlled Actions available{/i18n}:
38 39 {$context->getActionStringForState($oState)}
39 40 </li>
40 41  
41   - <li>{i18n}Permissions overridden:{/i18n} {$context->getPermissionStringForState($oState)}</li>
  42 + <li>{i18n}Permissions overridden{/i18n}: {$context->getPermissionStringForState($oState)}</li>
42 43  
43   - <li>{i18n}Transitions available: {/i18n}
  44 + <li>{i18n}Transitions available{/i18n}:
44 45 {$context->getTransitionFromStringForState($oState)}
45 46 </li>
46 47  
47   - <li>{i18n}Transitions to this state: {/i18n}
  48 + <li>{i18n}Transitions to this state{/i18n}:
48 49 {$context->getTransitionToStringForState($oState)}
49 50 </li>
50 51 </ul>
... ...
templates/ktcore/workflow/manageStates.smarty
... ... @@ -27,21 +27,21 @@ various different states for documents.{/i18n}&lt;/p&gt;
27 27 <li><span class="workflow_element">{i18n}State{/i18n}:</span> <a href="{addQS}action=editState&fStateId={$oState->getId()}&fWorkflowId={$oWorkflow->getId()}{/addQS}" class="workflow_label">{$oState->getName()}</a>
28 28 {if ($workflow_info.can_delete)} | <span class="ktActionLink ktDelete"><a href="{addQS}action=deleteState&fStateId={$oState->getId()}&fWorkflowId={$oWorkflow->getId()}{/addQS}" >{i18n}Delete{/i18n}</a></span>{/if}
29 29 <ul>
30   - <li>{i18n}Notified groups & roles:{/i18n}
  30 + <li>{i18n}Notified groups & roles{/i18n}:
31 31 {$context->getNotificationStringForState($oState)}
32 32 </li>
33 33  
34   - <li>{i18n}Controlled Actions available: {/i18n}
  34 + <li>{i18n}Controlled Actions available{/i18n}:
35 35 {$context->getActionStringForState($oState)}
36 36 </li>
37 37  
38   - <li>{i18n}Permissions overridden:{/i18n} {$context->getPermissionStringForState($oState)}</li>
  38 + <li>{i18n}Permissions overridden{/i18n}: {$context->getPermissionStringForState($oState)}</li>
39 39  
40   - <li>{i18n}Transitions available: {/i18n}
  40 + <li>{i18n}Transitions available{/i18n}:
41 41 {$context->getTransitionFromStringForState($oState)}
42 42 </li>
43 43  
44   - <li>{i18n}Transitions to this state: {/i18n}
  44 + <li>{i18n}Transitions to this state{/i18n}:
45 45 {$context->getTransitionToStringForState($oState)}
46 46 </li>
47 47 </ul>
... ...
templates/ktstandard/PDFPlugin/PDFPlugin.smarty
1   -<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n arg_docname=$context->oDocument->getName()}Convert to PDF: #docname#{/i18n}</h2>
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Generate PDF of{/i18n}:<br />{$context->oDocument->getName()}</h2>
2 2  
3 3 {$form->render()}
... ...
templates/ktstandard/action/discussion.smarty
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Discussion{/i18n}:<br />{$context->oDocument->getName()}</h2>
  2 +
1 3 {if $threads}
2 4 <h3>{i18n}Existing threads{/i18n}</h3>
3 5 <table class="kt_collection" cellspacing="0" cellpadding="0">
... ...
templates/ktstandard/action/document_links.smarty
1   -<h2>{i18n}Document Links{/i18n}</h2>
2   -
  1 +<h2><img src="{if $config->get("ui/morphEnabled") == '1'}{$rootUrl}/skins/kts_{$config->get("ui/morphTo")}/title_bullet.png{else}{$rootUrl}/resources/graphics/title_bullet.png{/if}"/>{i18n}Document Links{/i18n}:<br />{$context->oDocument->getName()}</h2>
3 2  
4 3 <p class="descriptiveText">{i18n}The current links to and from this document are displayed below.{/i18n}</p>
5 4  
... ...
templates/ktstandard/adminversion/dashlet.smarty
... ... @@ -16,8 +16,8 @@
16 16 <script type="text/javascript">var _KT_VERSIONS_URL = "{$kt_versions_url}";</script>
17 17  
18 18 <p>
19   -<span id="up_single">{i18n}The following upgrade is available:{/i18n}</span>
20   -<span id="up_multi">{i18n}The following upgrades are available:{/i18n}</span>
  19 +<span id="up_single">{i18n}The following upgrade is available{/i18n}:</span>
  20 +<span id="up_multi">{i18n}The following upgrades are available{/i18n}:</span>
21 21 <span id="up_upgrades"></span>
22 22 {i18n}Please visit <a href="http://www.knowledgetree.com">www.knowledgetree.com</a> to find out more.{/i18n}
23 23 </p>
... ...
templates/ktstandard/ktwebdavdashlet/dashlet.smarty
1   -<div>
2   -<p>{i18n arg_appname="$appname"}To connect to #appname# via a third-party WebDAV client, please use the following address:{/i18n}<br/>
  1 +<div>
  2 +<p>{i18n arg_appname="$appname"}To connect to #appname# via a third-party WebDAV client, please use the following address{/i18n}:<br/>
3 3 <b><a href="{$url}ktwebdav/ktwebdav.php" target="_blank">{$url}ktwebdav/ktwebdav.php</a></b><br/><br/>
4   -{i18n arg_appname="$appname"}To connect with the #appname# Tools Suite, use this address:{/i18n}<br/>
5   -<b>{$url}</b><br/><br/>
6   -</p>
7   -</div>
8   -
  4 +{i18n arg_appname="$appname"}To connect with the #appname# Tools Suite, use this address{/i18n}:<br/>
  5 +<b>{$url}</b><br/><br/>
  6 +</p>
  7 +</div>
  8 +
... ...
thirdparty/Smarty/plugins/modifier.mb_wordwrap.php
... ... @@ -20,14 +20,22 @@
20 20 */
21 21 function smarty_modifier_mb_wordwrap($string,$length=80,$break="\n",$cut=false)
22 22 {
23   -
24   - $newString = "";
25   - $index = 0;
26   - while(mb_strlen($newString) < mb_strlen($string)){
27   - $newString .= mb_strcut($string, $index, $length, "UTF8") . $break;
28   - $index += $length;
29   - }
30   - return $newString;
31   -
  23 + if ($length == 0)
  24 + return '';
  25 +
  26 + if (mb_strlen($string) > $length) {
  27 +
  28 + //if (!$cut) $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1));
  29 +
  30 + $newString = "";
  31 + $index = 0;
  32 + $breakslen = 0;
  33 + while(mb_strlen($newString)-$breakslen < mb_strlen($string)){
  34 + $newString .= mb_strcut($string, $index, $length, "UTF-8") . $break;
  35 + $index += $length;
  36 + $breakslen += mb_strlen($break);
  37 + }
  38 + return $newString;
  39 + } else return $string;
32 40 }
33 41 ?>
34 42 \ No newline at end of file
... ...
view.php
... ... @@ -236,6 +236,7 @@ class ViewDocumentDispatcher extends KTStandardDispatcher {
236 236 "canCheckin" => $bCanCheckin,
237 237 "document_id" => $document_id,
238 238 "document" => $oDocument,
  239 + "documentName" => $oDocument->getName(),
239 240 "document_data" => $document_data,
240 241 "fieldsets" => $fieldsets,
241 242 'viewlet_data' => $viewlet_data,
... ...