Commit 627ecd4d3078c6b4fd8de62cee39a109f99e3a16

Authored by kevin_fourie
1 parent 7f6aef9f

KTS-2790

"CLONE -Backslashes appear before every quote and double quote throughout our version of knowledgetree(SUP-532)"
Fixed. Added an upgrade script to remove the backslashes.

Committed by: Megan Watson
Reviewed by: Conrad Vermeulen

KTS-2653
"Change the text at the end of a bulk export"
Fixed. Changed the display at the end of both ways of bulk exporting.

Committed By:Yusuf Davids
Reviewed By:Jalaloedien Abrahams

KTS-2456
"Dropdown in search bar and search portlet needs to be aligned correctly"
Fixed. Patched to work with IE

Committed By: Conrad Vermeulen
Reviewed By: Megan Watson

KTS-2301
"Number of characters allowed in a field is not 250 as is mostly specified"

Fixed. Changed version, filename and comment fields variable types.

Committed By: Jonathan Byrne
Reviewed By: Jalaloedien Abrahams

KTS-2833
"Text in Search Portlet overruns the width of the portlet"
Fixed.

Committed By: Conrad Vermeulen
Reviewed By: Megan Watson

KTS-2827
"Search by created/modified/checkout date returns wrong results"
Fixed. Rendering in IE was not working because of missing close of TD element

Committed By: Conrad Vermeulen
Reviewed By: Megan  Watson

KTS-2456
"Dropdown in search bar and search portlet needs to be aligned correctly"
Fixed. Updated so IE does not complain

Committed By: Conrad Vermeulen
Reviewed By: Megan Watson

KTS-2831
"CLONE -End line characters in discussions and disclaimers being displayed as html tags (SUP-546)"
Fixed. Removed the calls to sanitiseForSQL before inserting into the database.

Committed by: Megan Watson
Reviewed by: Conrad Vermeulen

KTS-2831
"CLONE -End line characters in discussions and disclaimers being displayed as html tags (SUP-546)"
Fixed. Replaced the \r\n with <br>

Committed by: Megan Watson
Reviewed by: Conrad Vermeulen

KTS-2772
"CLONE -LDAP / Active Directory Authentication incorrect fields returned(SUP-521)"
Fixed. Rearranged the attributes retrieved from either directory to match the user's fields correctly.

Committed by: Megan Watson
Reviewed by: Conrad Vermeulen

KTS-2790
"CLONE -Backslashes appear before every quote and double quote throughout our version of knowledgetree(SUP-532)"
Updated. Added upgrade line items to upgrades table.

Committed by: Kevin Fourie
Reviewed by: Conrad Vermeulen


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/STABLE/trunk@7915 c91229c3-7414-0410-bfa2-8a42b809f60b
ktapi/KTAPIDocument.inc.php
... ... @@ -1109,6 +1109,7 @@ class KTAPI_Document extends KTAPI_FolderItem
1109 1109 */
1110 1110 function update_sysdata($sysdata)
1111 1111 {
  1112 + global $default;
1112 1113 if (empty($sysdata))
1113 1114 {
1114 1115 return;
... ... @@ -1182,10 +1183,12 @@ class KTAPI_Document extends KTAPI_FolderItem
1182 1183 $value = DBUtil::getResultArray($sql);
1183 1184 if (PEAR::isError($value))
1184 1185 {
  1186 + $default->log->error("Problem resolving mime type '$value' for document id $this->documentid. Reason: " . $value->getMessage());
1185 1187 return $value;
1186 1188 }
1187 1189 if (count($value) == 0)
1188 1190 {
  1191 + $default->log->error("Problem resolving mime type '$value' for document id $this->documentid. None found.");
1189 1192 break;
1190 1193 }
1191 1194 $value = $value[0]['id'];
... ... @@ -1198,6 +1201,7 @@ class KTAPI_Document extends KTAPI_FolderItem
1198 1201 $userId = DBUtil::getResultArray($sql);
1199 1202 if (PEAR::isError($userId))
1200 1203 {
  1204 + $default->log->error("Problem resolving user '$value' for document id $this->documentid. Reason: " . $userId->getMessage());
1201 1205 return $userId;
1202 1206 }
1203 1207 if (empty($userId))
... ... @@ -1206,11 +1210,13 @@ class KTAPI_Document extends KTAPI_FolderItem
1206 1210 $userId = DBUtil::getResultArray($sql);
1207 1211 if (PEAR::isError($userId))
1208 1212 {
  1213 + $default->log->error("Problem resolving username '$value' for document id $this->documentid. Reason: " . $userId->getMessage());
1209 1214 return $userId;
1210 1215 }
1211 1216 }
1212 1217 if (empty($userId))
1213 1218 {
  1219 + $default->log->error("Problem resolving user based on '$value' for document id $this->documentid. No user found");
1214 1220 // if not found, not much we can do
1215 1221 break;
1216 1222 }
... ... @@ -1221,6 +1227,7 @@ class KTAPI_Document extends KTAPI_FolderItem
1221 1227 $documents[$name] = $userId;
1222 1228 break;
1223 1229 default:
  1230 + $default->log->error("Problem updating field '$name' with value '$value' for document id $this->documentid. Field is unknown.");
1224 1231 // TODO: we should do some logging
1225 1232 //return new PEAR_Error('Unexpected field: ' . $name);
1226 1233 }
... ... @@ -1272,7 +1279,15 @@ class KTAPI_Document extends KTAPI_FolderItem
1272 1279 if (!is_null($indexContent))
1273 1280 {
1274 1281 $indexer = Indexer::get();
1275   - $indexer->updateDocumentIndex($this->documentid, $indexContent);
  1282 + $result = $indexer->diagnose();
  1283 + if (empty($result))
  1284 + {
  1285 + $indexer->updateDocumentIndex($this->documentid, $indexContent);
  1286 + }
  1287 + else
  1288 + {
  1289 + $default->log->error("Problem updating index with value '$value' for document id $this->documentid. Problem with indexer.");
  1290 + }
1276 1291 }
1277 1292 }
1278 1293  
... ...
lib/discussions/DiscussionComment.inc
... ... @@ -7,38 +7,38 @@
7 7 * KnowledgeTree Open Source Edition
8 8 * Document Management Made Simple
9 9 * Copyright (C) 2004 - 2007 The Jam Warehouse Software (Pty) Limited
10   - *
  10 + *
11 11 * This program is free software; you can redistribute it and/or modify it under
12 12 * the terms of the GNU General Public License version 3 as published by the
13 13 * Free Software Foundation.
14   - *
  14 + *
15 15 * This program is distributed in the hope that it will be useful, but WITHOUT
16 16 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17 17 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18 18 * details.
19   - *
  19 + *
20 20 * You should have received a copy of the GNU General Public License
21 21 * along with this program. If not, see <http://www.gnu.org/licenses/>.
22   - *
  22 + *
23 23 * You can contact The Jam Warehouse Software (Pty) Limited, Unit 1, Tramber Place,
24 24 * Blake Street, Observatory, 7925 South Africa. or email info@knowledgetree.com.
25   - *
  25 + *
26 26 * The interactive user interfaces in modified source and object code versions
27 27 * of this program must display Appropriate Legal Notices, as required under
28 28 * Section 5 of the GNU General Public License version 3.
29   - *
  29 + *
30 30 * In accordance with Section 7(b) of the GNU General Public License version 3,
31 31 * these Appropriate Legal Notices must retain the display of the "Powered by
32   - * KnowledgeTree" logo and retain the original copyright notice. If the display of the
  32 + * KnowledgeTree" logo and retain the original copyright notice. If the display of the
33 33 * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices
34   - * must display the words "Powered by KnowledgeTree" and retain the original
35   - * copyright notice.
  34 + * must display the words "Powered by KnowledgeTree" and retain the original
  35 + * copyright notice.
36 36 * Contributor( s): ______________________________________
37 37 */
38 38  
39 39 class DiscussionComment extends KTEntity {
40 40 var $_bUsePearError = true;
41   -
  41 +
42 42 var $iThreadId;
43 43 var $iUserId;
44 44 var $sSubject;
... ... @@ -66,12 +66,12 @@ class DiscussionComment extends KTEntity {
66 66  
67 67 function getThreadId(){ return $this->iThreadId; }
68 68 function setThreadId($iThreadId){ $this->iThreadId = $iThreadId; }
69   - function getUserId(){ return $this->iUserId; }
  69 + function getUserId(){ return $this->iUserId; }
70 70 function setUserId($iNewUserId){ $this->iUserId = $iNewUserId; }
71   - function getSubject(){ return sanitizeForSQLtoHTML($this->sSubject); }
72   - function setSubject($sNewSubject){ $this->sSubject = sanitizeForSQL($sNewSubject); }
73   - function getBody(){ return sanitizeForSQLtoHTML($this->sBody); }
74   - function setBody($sNewBody){ $this->sBody = sanitizeForSQL($sNewBody); }
  71 + function getSubject(){ return $this->sSubject; }
  72 + function setSubject($sNewSubject){ $this->sSubject = $sNewSubject; }
  73 + function getBody(){ return $this->sBody; }
  74 + function setBody($sNewBody){ $this->sBody = $sNewBody; }
75 75 function getDate(){ return $this->dDate; }
76 76 function getInReplyTo(){ return $this->iInReplyTo; }
77 77 function setInReplyTo($sNewCommentId){ $this->iInReplyTo = $sNewCommentId; }
... ...
lib/templating/kt3template.inc.php
... ... @@ -104,7 +104,13 @@ class KTPage {
104 104 $aCSS = Array(
105 105 "resources/css/kt-framing.css",
106 106 "resources/css/kt-contenttypes.css",
107   - "resources/css/kt-headings.css"
  107 + "resources/css/kt-headings.css",
  108 +// "thirdpartyjs/extjs/resources/css/xtheme-kt.css",
  109 + "thirdpartyjs/extjs/resources/css/ext-all.css",
  110 + "thirdpartyjs/extjs/examples/examples.css",
  111 + // "thirdpartyjs/extjs/examples/menu/menu.css",
  112 + "thirdpartyjs/extjs/examples/lib.css",
  113 +// "skins/kt-toolbar.css"
108 114 );
109 115 $this->requireCSSResources($aCSS);
110 116  
... ... @@ -134,9 +140,12 @@ class KTPage {
134 140 $aJS[] = 'thirdpartyjs/curvycorners/rounded_corners.inc.js';
135 141 $aJS[] = 'resources/js/loader.js';
136 142 $aJS[] = 'thirdpartyjs/yui/tools/tools.js';
137   - $aJS[] = 'thirdpartyjs/yui/connection/connection.js';
138   -
  143 + $aJS[] = 'thirdpartyjs/yui/connection/connection-min.js';
139 144  
  145 + $aJS[] = 'thirdpartyjs/extjs/adapter/ext/ext-base.js';
  146 + $aJS[] = 'thirdpartyjs/extjs/ext-all.js';
  147 + $aJS[] = 'thirdpartyjs/extjs/examples/examples.js';
  148 + $aJS[] = 'resources/js/search2widget.js';
140 149  
141 150 //$aJS[] = 'thirdpartyjs/MochiKit/.js';
142 151 //$aJS[] = 'resources/js/translate.js';
... ...
lib/templating/smartytemplate.inc.php
... ... @@ -90,14 +90,14 @@ class KTSmartyTemplate extends KTTemplate {
90 90 $search2_quickQuery = trim($_SESSION['search2_quickQuery']);
91 91 if ($search2_quickQuery == '')
92 92 {
93   - $search2_quickQuery = _kt('Enter search criteria');
  93 + $search2_quickQuery = '';
94 94 }
95 95 }
96 96 else
97 97 {
98 98 $search2_quick=0;
99 99 $search2_general=1;
100   - $search2_quickQuery = _kt('Enter search criteria');
  100 + $search2_quickQuery = '';
101 101 $_SESSION['search2_quick'] = $search2_quick;
102 102 $_SESSION['search2_general'] = $search2_general;
103 103 $_SESSION['search2_quickQuery'] = '';
... ...
plugins/housekeeper/FolderUsageDashlet.inc.php
... ... @@ -151,7 +151,15 @@ class FolderUsageDashlet extends KTBaseDashlet
151 151 $oRegistry =& KTPluginRegistry::getSingleton();
152 152 $oPlugin =& $oRegistry->getPlugin('ktcore.housekeeper.plugin');
153 153  
  154 + $config = KTConfig::getSingleton();
  155 + $rootUrl = $config->get('KnowledgeTree/rootUrl');
  156 +
154 157 $dispatcherURL = $oPlugin->getURLPath('HouseKeeperDispatcher.php');
  158 + if (!empty($rootUrl)) $dispatcherURL .= $rootUrl . $dispatcherURL;
  159 + if (substr($dispatcherURL, 0,1 ) == '/')
  160 + {
  161 + $dispatcherURL = substr($dispatcherURL,1);
  162 + }
155 163  
156 164 $this->getUsage();
157 165  
... ...
plugins/ktcore/KTBulkActions.php
... ... @@ -606,9 +606,9 @@ class KTBrowseBulkExportAction extends KTBulkAction {
606 606 $this->commitTransaction();
607 607  
608 608 $url = KTUtil::addQueryStringSelf(sprintf('action=downloadZipFile&fFolderId=%d&exportcode=%s', $this->oFolder->getId(), $sExportCode));
609   - $str = sprintf('<p>' . _kt('Go <a href="%s">here</a> to download the zip file if you are not automatically redirected there') . "</p>\n", $url);
  609 + $str = sprintf('<p>' . _kt('Your download will begin shortly. If you are not automatically redirected to your download, please click <a href="%s">here</a> ') . "</p>\n", $url);
610 610 $folderurl = KTBrowseUtil::getUrlForFolder($this->oFolder);
611   - $str .= sprintf('<p>' . _kt('Once downloaded, return to the original <a href="%s">folder</a>') . "</p>\n", $folderurl);
  611 + $str .= sprintf('<p>' . _kt('Once your download is complete, click <a href="%s">here</a> to return to the original folder') . "</p>\n", $folderurl);
612 612 //$str .= sprintf("</div></div></body></html>\n");
613 613 $str .= sprintf('<script language="JavaScript">
614 614 function kt_bulkexport_redirect() {
... ...
plugins/ktstandard/KTBulkExportPlugin.php
... ... @@ -154,7 +154,7 @@ class KTBulkExportAction extends KTFolderAction {
154 154 ));
155 155  
156 156 $url = KTUtil::addQueryStringSelf(sprintf('action=downloadZipFile&fFolderId=%d&exportcode=%s', $this->oFolder->getId(), $sExportCode));
157   - printf('<p>' . _kt('Your download will begin shortly. If you are not automatically redirected to download the zip file, click <a href="%s">here</a> ') . "</p>\n", $url);
  157 + printf('<p>' . _kt('Your download will begin shortly. If you are not automatically redirected to your download, please click <a href="%s">here</a> ') . "</p>\n", $url);
158 158 $folderurl = KTBrowseUtil::getUrlForFolder($this->oFolder);
159 159 printf('<p>' . _kt('Once your download is complete, click <a href="%s">here</a> to return to the original folder') . "</p>\n", $folderurl);
160 160 printf("</div></div></body></html>\n");
... ...
plugins/ktstandard/KTDisclaimers.php
... ... @@ -5,32 +5,32 @@
5 5 * KnowledgeTree Open Source Edition
6 6 * Document Management Made Simple
7 7 * Copyright (C) 2004 - 2007 The Jam Warehouse Software (Pty) Limited
8   - *
  8 + *
9 9 * This program is free software; you can redistribute it and/or modify it under
10 10 * the terms of the GNU General Public License version 3 as published by the
11 11 * Free Software Foundation.
12   - *
  12 + *
13 13 * This program is distributed in the hope that it will be useful, but WITHOUT
14 14 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 15 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
16 16 * details.
17   - *
  17 + *
18 18 * You should have received a copy of the GNU General Public License
19 19 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20   - *
  20 + *
21 21 * You can contact The Jam Warehouse Software (Pty) Limited, Unit 1, Tramber Place,
22 22 * Blake Street, Observatory, 7925 South Africa. or email info@knowledgetree.com.
23   - *
  23 + *
24 24 * The interactive user interfaces in modified source and object code versions
25 25 * of this program must display Appropriate Legal Notices, as required under
26 26 * Section 5 of the GNU General Public License version 3.
27   - *
  27 + *
28 28 * In accordance with Section 7(b) of the GNU General Public License version 3,
29 29 * these Appropriate Legal Notices must retain the display of the "Powered by
30   - * KnowledgeTree" logo and retain the original copyright notice. If the display of the
  30 + * KnowledgeTree" logo and retain the original copyright notice. If the display of the
31 31 * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices
32   - * must display the words "Powered by KnowledgeTree" and retain the original
33   - * copyright notice.
  32 + * must display the words "Powered by KnowledgeTree" and retain the original
  33 + * copyright notice.
34 34 * Contributor( s): ______________________________________
35 35 *
36 36 */
... ... @@ -50,7 +50,7 @@ class KTDisclaimersPlugin extends KTPlugin {
50 50 $res = parent::KTPlugin($sFilename);
51 51 $this->sFriendlyName = _kt('Disclaimers Plugin');
52 52 return $res;
53   - }
  53 + }
54 54  
55 55 function setup() {
56 56 $this->setupAdmin();
... ... @@ -67,25 +67,25 @@ class KTDisclaimersPlugin extends KTPlugin {
67 67 }
68 68  
69 69 function getDisclaimer($sLocation) {
70   - $sDisclaimer = false;
  70 + $sDisclaimer = false;
  71 +
  72 + if($this->isRegistered()) {
  73 + $aHelp = KTHelp::getHelpInfo($sLocation);
71 74  
72   - if($this->isRegistered()) {
73   - $aHelp = KTHelp::getHelpInfo($sLocation);
74   -
75   - if(!PEAR::isError($aHelp) && strlen(trim($aHelp['body']))) {
76   - $sDisclaimer = $aHelp['body'];
77   - }
78   - }
  75 + if(!PEAR::isError($aHelp) && strlen(trim($aHelp['body']))) {
  76 + $sDisclaimer = str_replace('\r\n', '<br>', $aHelp['body']);
  77 + }
  78 + }
79 79  
80   - return $sDisclaimer;
  80 + return $sDisclaimer;
81 81 }
82 82  
83 83 function getPageDisclaimer() {
84   - return $this->getDisclaimer($this->aDisclaimers['page']['path']);
  84 + return $this->getDisclaimer($this->aDisclaimers['page']['path']);
85 85 }
86 86  
87 87 function getLoginDisclaimer() {
88   - return $this->getDisclaimer($this->aDisclaimers['login']['path']);
  88 + return $this->getDisclaimer($this->aDisclaimers['login']['path']);
89 89 }
90 90  
91 91 }
... ...
plugins/ktstandard/KTDiscussion.php
... ... @@ -5,32 +5,32 @@
5 5 * KnowledgeTree Open Source Edition
6 6 * Document Management Made Simple
7 7 * Copyright (C) 2004 - 2007 The Jam Warehouse Software (Pty) Limited
8   - *
  8 + *
9 9 * This program is free software; you can redistribute it and/or modify it under
10 10 * the terms of the GNU General Public License version 3 as published by the
11 11 * Free Software Foundation.
12   - *
  12 + *
13 13 * This program is distributed in the hope that it will be useful, but WITHOUT
14 14 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 15 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
16 16 * details.
17   - *
  17 + *
18 18 * You should have received a copy of the GNU General Public License
19 19 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20   - *
  20 + *
21 21 * You can contact The Jam Warehouse Software (Pty) Limited, Unit 1, Tramber Place,
22 22 * Blake Street, Observatory, 7925 South Africa. or email info@knowledgetree.com.
23   - *
  23 + *
24 24 * The interactive user interfaces in modified source and object code versions
25 25 * of this program must display Appropriate Legal Notices, as required under
26 26 * Section 5 of the GNU General Public License version 3.
27   - *
  27 + *
28 28 * In accordance with Section 7(b) of the GNU General Public License version 3,
29 29 * these Appropriate Legal Notices must retain the display of the "Powered by
30   - * KnowledgeTree" logo and retain the original copyright notice. If the display of the
  30 + * KnowledgeTree" logo and retain the original copyright notice. If the display of the
31 31 * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices
32   - * must display the words "Powered by KnowledgeTree" and retain the original
33   - * copyright notice.
  32 + * must display the words "Powered by KnowledgeTree" and retain the original
  33 + * copyright notice.
34 34 * Contributor( s): ______________________________________
35 35 *
36 36 */
... ... @@ -136,12 +136,12 @@ class KTDocumentDiscussionAction extends KTDocumentAction {
136 136 $fields[] = new KTStringWidget(_kt("Subject"), _kt("The topic of discussion in this thread"), "subject", "", $this->oPage, true);
137 137 $fields[] = new KTTextWidget(_kt("Body"), _kt("Your contribution to the discussion in this thread"), "body", "", $this->oPage, true, null, null, array("cols" => 50, "rows" => 10));
138 138  
139   - $bIncludeClosed = KTUtil::arrayGet($_REQUEST, 'fIncludeClosed', false);
  139 + $bIncludeClosed = KTUtil::arrayGet($_REQUEST, 'fIncludeClosed', false);
140 140  
141   - $sQuery = sprintf('document_id = %d', $this->oDocument->getId());
142   - if(!$bIncludeClosed) {
143   - $sQuery .= sprintf(' AND state != %d', DISCUSSION_CLOSED);
144   - }
  141 + $sQuery = sprintf('document_id = %d', $this->oDocument->getId());
  142 + if(!$bIncludeClosed) {
  143 + $sQuery .= sprintf(' AND state != %d', DISCUSSION_CLOSED);
  144 + }
145 145  
146 146 $threads = DiscussionThread::getList($sQuery);
147 147 $sQuery2 = sprintf('document_id = %d AND state = %d', $this->oDocument->getId(), DISCUSSION_CLOSED);
... ... @@ -183,8 +183,8 @@ class KTDocumentDiscussionAction extends KTDocumentAction {
183 183 $oComment = DiscussionComment::createFromArray(array(
184 184 'threadid' => $oThread->getId(),
185 185 'userid' => $this->oUser->getId(),
186   - 'subject' => sanitizeForSQL($sSubject),
187   - 'body' => sanitizeForSQL(KTUtil::formatPlainText($sBody)),
  186 + 'subject' => $sSubject,
  187 + 'body' => KTUtil::formatPlainText($sBody),
188 188 ));
189 189 $aErrorOptions['message'] = _kt("There was an error adding the comment to the thread");
190 190 $this->oValidator->notError($oComment, $aErrorOptions);
... ... @@ -315,8 +315,8 @@ class KTDocumentDiscussionAction extends KTDocumentAction {
315 315 $oComment = DiscussionComment::createFromArray(array(
316 316 'threadid' => $oThread->getId(),
317 317 'userid' => $this->oUser->getId(),
318   - 'subject' => sanitizeForSQL($sSubject),
319   - 'body' => sanitizeForSQL(KTUtil::formatPlainText($sBody)),
  318 + 'subject' => $sSubject,
  319 + 'body' => KTUtil::formatPlainText($sBody),
320 320 ));
321 321 $aErrorOptions['message'] = _kt("There was an error adding the comment to the thread");
322 322 $this->oValidator->notError($oComment, $aErrorOptions);
... ... @@ -378,7 +378,7 @@ class KTDocumentDiscussionAction extends KTDocumentAction {
378 378 );
379 379  
380 380 $oPermission =& KTPermission::getByName('ktcore.permissions.workflow');
381   - $sRedirectTo = implode('&', $aErrorOptions['redirect_to']);
  381 + $sRedirectTo = implode('&', $aErrorOptions['redirect_to']);
382 382  
383 383 if (PEAR::isError($oPermission)) {
384 384 $this->errorRedirectTo($sRedirectTo, _kt("Error getting permission"));
... ... @@ -389,30 +389,30 @@ class KTDocumentDiscussionAction extends KTDocumentAction {
389 389 exit(0);
390 390 }
391 391  
392   - $iStateId = KTUtil::arrayGet($_REQUEST, 'state');
393   - if(!in_array($iStateId, $this->aTransitions[$oThread->getState()])) {
394   - $this->errorRedirectTo($sRedirectTo, _kt("Invalid transition"));
395   - exit(0);
396   - }
  392 + $iStateId = KTUtil::arrayGet($_REQUEST, 'state');
  393 + if(!in_array($iStateId, $this->aTransitions[$oThread->getState()])) {
  394 + $this->errorRedirectTo($sRedirectTo, _kt("Invalid transition"));
  395 + exit(0);
  396 + }
397 397  
398   - $aErrorOptions['message'] = _kt("No reason provided");
399   - $sReason = sanitizeForSQL($this->oValidator->validateString(KTUtil::arrayGet($_REQUEST, 'reason'), $aErrorOptions));
  398 + $aErrorOptions['message'] = _kt("No reason provided");
  399 + $sReason = $this->oValidator->validateString(KTUtil::arrayGet($_REQUEST, 'reason'), $aErrorOptions);
400 400  
401   - if($iStateId > $oThread->getState()) {
402   - $sTransactionNamespace = 'ktcore.transactions.collaboration_step_approve';
403   - } else {
404   - $sTransactionNamespace = 'ktcore.transactions.collaboration_step_rollback';
405   - }
  401 + if($iStateId > $oThread->getState()) {
  402 + $sTransactionNamespace = 'ktcore.transactions.collaboration_step_approve';
  403 + } else {
  404 + $sTransactionNamespace = 'ktcore.transactions.collaboration_step_rollback';
  405 + }
406 406  
407 407 // Start the transaction comment creation
408 408 $this->startTransaction();
409 409  
410 410 $oThread->setState($iStateId);
411   - if($iStateId == DISCUSSION_CLOSED) {
412   - $oThread->setCloseMetadataVersion($this->oDocument->getMetadataVersion());
413   - } else if($iStateId == DISCUSSION_CONCLUSION) {
414   - $oThread->setCloseReason($sReason);
415   - }
  411 + if($iStateId == DISCUSSION_CLOSED) {
  412 + $oThread->setCloseMetadataVersion($this->oDocument->getMetadataVersion());
  413 + } else if($iStateId == DISCUSSION_CONCLUSION) {
  414 + $oThread->setCloseReason($sReason);
  415 + }
416 416  
417 417 $oDocumentTransaction = new DocumentTransaction($this->oDocument, $sReason, $sTransactionNamespace);
418 418 $oDocumentTransaction->create();
... ... @@ -429,9 +429,6 @@ class KTDocumentDiscussionAction extends KTDocumentAction {
429 429 exit(0);
430 430 }
431 431  
432   -
433   -
434   -
435 432 function &_buildStates(&$oThread) {
436 433 $iCurState = $oThread->getState();
437 434 $aTransitions = $this->aTransitions[$iCurState];
... ... @@ -450,3 +447,4 @@ class KTDocumentDiscussionAction extends KTDocumentAction {
450 447  
451 448  
452 449 }
  450 +?>
453 451 \ No newline at end of file
... ...
plugins/ktstandard/contents/BaseIndexer.php
... ... @@ -147,6 +147,7 @@ class KTBaseIndexerTrigger {
147 147 $cmdline[] = $sFilename;
148 148  
149 149 $aOptions = array();
  150 + $aOptions['exec_wait'] = 'true';
150 151 if ($this->use_pipes) {
151 152 $aOptions["append"] = $sTempFilename;
152 153 } else {
... ...
plugins/ktstandard/contents/OpenDocumentIndexer.php
... ... @@ -118,7 +118,10 @@ class KTOpenDocumentIndexerTrigger extends KTBaseIndexerTrigger {
118 118 if (empty($sUnzipCommand)) {
119 119 return;
120 120 }
121   - $this->sTmpPath = tempnam('/tmp', 'opendocumentextract');
  121 + $oKTConfig =& KTConfig::getSingleton();
  122 + $sBasedir = $oKTConfig->get("urls/tmpDirectory");
  123 +
  124 + $this->sTmpPath = tempnam($sBasedir, 'opendocumentextract');
122 125 if ($this->sTmpPath === false) {
123 126 return;
124 127 }
... ... @@ -131,14 +134,20 @@ class KTOpenDocumentIndexerTrigger extends KTBaseIndexerTrigger {
131 134 "-d", $this->sTmpPath,
132 135 $sFilename,
133 136 );
134   - KTUtil::pexec($sCmd);
  137 + KTUtil::pexec($sCmd, array('exec_wait' => 'true'));
135 138  
136 139 $sManifest = sprintf("%s/%s", $this->sTmpPath, "META-INF/manifest.xml");
  140 + if (OS_WINDOWS) {
  141 + $sManifest = str_replace( '/','\\',$sManifest);
  142 + }
137 143 if (!file_exists($sManifest)) {
138 144 $this->cleanup();
139 145 return;
140 146 }
141 147 $sContentFile = sprintf("%s/%s", $this->sTmpPath, "content.xml");
  148 + if (OS_WINDOWS) {
  149 + $sContentFile = str_replace( '/','\\',$sContentFile );
  150 + }
142 151 if (!file_exists($sContentFile)) {
143 152 $this->cleanup();
144 153 return;
... ... @@ -152,7 +161,8 @@ class KTOpenDocumentIndexerTrigger extends KTBaseIndexerTrigger {
152 161 }
153 162  
154 163 function cleanup() {
155   - KTUtil::deleteDirectory($this->sTmpPath);
  164 + return;
  165 + //KTUtil::deleteDirectory($this->sTmpPath);
156 166 }
157 167 }
158 168  
... ...
plugins/ktstandard/contents/WordIndexer.php
... ... @@ -51,12 +51,35 @@ class KTWordIndexerTrigger extends KTBaseIndexerTrigger {
51 51 $this->command = 'c:\antiword\antiword.exe';
52 52 $this->commandconfig = 'indexer/antiword';
53 53 $this->args = array();
  54 + }
  55 + putenv('LANG=en_US.UTF-8');
  56 +
  57 + $sCommand = KTUtil::findCommand($this->commandconfig, $this->command);
  58 + if (empty($sCommand)) {
  59 + return false;
  60 + }
  61 +
  62 + if (OS_WINDOWS) {
  63 + $sDir = dirname(dirname($sCommand));
  64 + putenv('HOME=' . $sDir);
54 65  
55   - $sCommand = KTUtil::findCommand($this->commandconfig, $this->command);
56   - $sDir = dirname(dirname($sCommand));
57   - putenv('HOME=' . $sDir);
  66 + $cmdline = array($sCommand);
  67 + $cmdline = kt_array_merge($cmdline, $this->args);
  68 + $cmdline[] = $sFilename;
  69 +
  70 + $sCmd = KTUtil::safeShellString($cmdline);
  71 + $sCmd .= " >> " . escapeshellarg($sTempFilename);
  72 +
  73 + $sCmd = str_replace( '/','\\',$sCmd);
  74 +
  75 + $sCmd = "start /b \"kt\" " . $sCmd;
  76 +
  77 + pclose(popen($sCmd, 'r'));
  78 +
  79 + $this->aCommandOutput = 1;
  80 + $contents = file_get_contents($sTempFilename);
  81 + return $contents;
58 82 }
59   - putenv('LANG=en_US.UTF-8');
60 83 return parent::extract_contents($sFilename, $sTempFilename);
61 84 }
62 85  
... ...
plugins/ktstandard/ldap/activedirectoryauthenticationprovider.inc.php
... ... @@ -5,32 +5,32 @@
5 5 * KnowledgeTree Open Source Edition
6 6 * Document Management Made Simple
7 7 * Copyright (C) 2004 - 2007 The Jam Warehouse Software (Pty) Limited
8   - *
  8 + *
9 9 * This program is free software; you can redistribute it and/or modify it under
10 10 * the terms of the GNU General Public License version 3 as published by the
11 11 * Free Software Foundation.
12   - *
  12 + *
13 13 * This program is distributed in the hope that it will be useful, but WITHOUT
14 14 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 15 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
16 16 * details.
17   - *
  17 + *
18 18 * You should have received a copy of the GNU General Public License
19 19 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20   - *
  20 + *
21 21 * You can contact The Jam Warehouse Software (Pty) Limited, Unit 1, Tramber Place,
22 22 * Blake Street, Observatory, 7925 South Africa. or email info@knowledgetree.com.
23   - *
  23 + *
24 24 * The interactive user interfaces in modified source and object code versions
25 25 * of this program must display Appropriate Legal Notices, as required under
26 26 * Section 5 of the GNU General Public License version 3.
27   - *
  27 + *
28 28 * In accordance with Section 7(b) of the GNU General Public License version 3,
29 29 * these Appropriate Legal Notices must retain the display of the "Powered by
30   - * KnowledgeTree" logo and retain the original copyright notice. If the display of the
  30 + * KnowledgeTree" logo and retain the original copyright notice. If the display of the
31 31 * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices
32   - * must display the words "Powered by KnowledgeTree" and retain the original
33   - * copyright notice.
  32 + * must display the words "Powered by KnowledgeTree" and retain the original
  33 + * copyright notice.
34 34 * Contributor( s): ______________________________________
35 35 *
36 36 */
... ... @@ -40,20 +40,21 @@ require_once(KT_LIB_DIR . &#39;/authentication/Authenticator.inc&#39;);
40 40 require_once(KT_DIR . '/plugins/ktstandard/ldap/ldapbaseauthenticationprovider.inc.php');
41 41  
42 42 class KTActiveDirectoryAuthenticationProvider extends KTLDAPBaseAuthenticationProvider {
43   - var $sNamespace = "ktstandard.authentication.adprovider";
  43 + var $sNamespace = 'ktstandard.authentication.adprovider';
44 44  
45 45 var $bGroupSource = true;
46 46  
47   - var $sAuthenticatorClass = "KTActiveDirectoryAuthenticator";
48   - var $aAttributes = array ("cn", "samaccountname", "givenname", "sn", "userprincipalname", "telephonenumber");
  47 + var $sAuthenticatorClass = 'KTActiveDirectoryAuthenticator';
  48 + var $aAttributes = array ('cn', 'samaccountname', 'givenname', 'sn', 'mail', 'telephonenumber', 'userprincipalname');
49 49  
50 50 function KTActiveDirectoryAuthenticationProvider() {
51   - $this->sName = _kt("ActiveDirectory authentication provider");
  51 + $this->sName = _kt('ActiveDirectory authentication provider');
52 52 parent::KTLDAPBaseAuthenticationProvider();
53 53 }
54 54 }
55 55  
56 56 class KTActiveDirectoryAuthenticator extends KTLDAPBaseAuthenticator {
57   - var $aAttributes = array ("cn", "samaccountname", "givenname", "sn", "userprincipalname", "telephonenumber");
  57 + var $aAttributes = array ('cn', 'samaccountname', 'givenname', 'sn', 'mail', 'telephonenumber', 'userprincipalname');
58 58 }
59 59  
  60 +?>
60 61 \ No newline at end of file
... ...
plugins/ktstandard/ldap/ldapauthenticationprovider.inc.php
... ... @@ -5,32 +5,32 @@
5 5 * KnowledgeTree Open Source Edition
6 6 * Document Management Made Simple
7 7 * Copyright (C) 2004 - 2007 The Jam Warehouse Software (Pty) Limited
8   - *
  8 + *
9 9 * This program is free software; you can redistribute it and/or modify it under
10 10 * the terms of the GNU General Public License version 3 as published by the
11 11 * Free Software Foundation.
12   - *
  12 + *
13 13 * This program is distributed in the hope that it will be useful, but WITHOUT
14 14 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 15 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
16 16 * details.
17   - *
  17 + *
18 18 * You should have received a copy of the GNU General Public License
19 19 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20   - *
  20 + *
21 21 * You can contact The Jam Warehouse Software (Pty) Limited, Unit 1, Tramber Place,
22 22 * Blake Street, Observatory, 7925 South Africa. or email info@knowledgetree.com.
23   - *
  23 + *
24 24 * The interactive user interfaces in modified source and object code versions
25 25 * of this program must display Appropriate Legal Notices, as required under
26 26 * Section 5 of the GNU General Public License version 3.
27   - *
  27 + *
28 28 * In accordance with Section 7(b) of the GNU General Public License version 3,
29 29 * these Appropriate Legal Notices must retain the display of the "Powered by
30   - * KnowledgeTree" logo and retain the original copyright notice. If the display of the
  30 + * KnowledgeTree" logo and retain the original copyright notice. If the display of the
31 31 * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices
32   - * must display the words "Powered by KnowledgeTree" and retain the original
33   - * copyright notice.
  32 + * must display the words "Powered by KnowledgeTree" and retain the original
  33 + * copyright notice.
34 34 * Contributor( s): ______________________________________
35 35 *
36 36 */
... ... @@ -41,19 +41,20 @@ require_once(&#39;Net/LDAP.php&#39;);
41 41 require_once(KT_DIR . '/plugins/ktstandard/ldap/ldapbaseauthenticationprovider.inc.php');
42 42  
43 43 class KTLDAPAuthenticationProvider extends KTLDAPBaseAuthenticationProvider {
44   - var $sNamespace = "ktstandard.authentication.ldapprovider";
  44 + var $sNamespace = 'ktstandard.authentication.ldapprovider';
45 45  
46   - var $aAttributes = array ("cn", "uid", "givenname", "sn", "mail", "mobile");
47   - var $sAuthenticatorClass = "KTLDAPAuthenticator";
  46 + var $aAttributes = array ('cn', 'samaccountname', 'givenname', 'sn', 'mail', 'mobile', 'userprincipalname', 'uid');
  47 + var $sAuthenticatorClass = 'KTLDAPAuthenticator';
48 48  
49 49 function KTLDAPAuthenticationProvider() {
50   - $this->sName = _kt("LDAP authentication provider");
  50 + $this->sName = _kt('LDAP authentication provider');
51 51 parent::KTLDAPBaseAuthenticationProvider();
52 52 }
53 53  
54 54 }
55 55  
56 56 class KTLDAPAuthenticator extends KTLDAPBaseAuthenticator {
57   - var $aAttributes = array ("cn", "uid", "givenname", "sn", "mail", "mobile");
  57 + var $aAttributes = array ('cn', 'samaccountname', 'givenname', 'sn', 'mail', 'mobile', 'userprincipalname', 'uid');
58 58 }
59 59  
  60 +?>
60 61 \ No newline at end of file
... ...
plugins/ktstandard/ldap/ldapbaseauthenticationprovider.inc.php
... ... @@ -39,11 +39,11 @@ require_once(KT_LIB_DIR . &#39;/authentication/authenticationprovider.inc.php&#39;);
39 39 require_once(KT_LIB_DIR . '/authentication/Authenticator.inc');
40 40  
41 41 class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider {
42   - var $sName = "LDAP authentication provider";
43   - var $sNamespace = "ktstandard.authentication.ldapprovider";
  42 + var $sName = 'LDAP authentication provider';
  43 + var $sNamespace = 'ktstandard.authentication.ldapprovider';
44 44  
45   - var $aAttributes = array ("cn", "uid", "givenname", "sn", "mail", "mobile");
46   - var $aMembershipAttributes = array ("memberOf");
  45 + var $aAttributes = array ('cn', 'samaccountname', 'givenname', 'sn', 'mail', 'mobile', 'userprincipalname', 'uid');
  46 + var $aMembershipAttributes = array ('memberOf');
47 47  
48 48 // {{{ KTLDAPBaseAuthenticationProvider
49 49 function KTLDAPBaseAuthenticationProvider() {
... ... @@ -281,10 +281,13 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider {
281 281 $this->oValidator->notError($aResults);
282 282  
283 283 $sUserName = $aResults[$this->aAttributes[1]];
284   - // With LDAP, if the 'uid' is null then try using the 'givenname' instead.
285   - // See activedirectoryauthenticationprovider.inc.php and ldapauthenticationprovider.inc.php for details.
286   - if($this->sAuthenticatorClass == "KTLDAPAuthenticator" && empty($sUserName)) {
287   - $sUserName = strtolower($aResults[$this->aAttributes[2]]);
  284 +
  285 + // If the SAMAccountName is empty then use the UserPrincipalName (UPN) to find the username.
  286 + // The UPN is normally the username @ the internet domain
  287 + if(empty($sUserName)) {
  288 + $sUpn = $aResults[$this->aAttributes[6]];
  289 + $aUpn = explode('@', $sUpn);
  290 + $sUserName = $aUpn[0];
288 291 }
289 292  
290 293 $fields = array();
... ... @@ -447,12 +450,12 @@ class KTLDAPBaseAuthenticationProvider extends KTAuthenticationProvider {
447 450 }
448 451 $aSearchDNs[$k] = "'".$aSearchResults[$k]['dn']."'";
449 452 }
450   -
  453 +
451 454 $sDNs = implode(',', $aSearchDNs);
452 455 $query = "SELECT id, authentication_details_s1 AS dn FROM users
453 456 WHERE authentication_details_s1 IN ($sDNs)";
454 457 $aCurUsers = DBUtil::getResultArray($query);
455   -
  458 +
456 459 // If the user has already been added, then remove from the list
457 460 if(!PEAR::isError($aCurUsers) && !empty($aCurUsers)){
458 461 foreach($aCurUsers as $item){
... ... @@ -961,3 +964,4 @@ class KTLDAPBaseAuthenticator extends Authenticator {
961 964 }
962 965 }
963 966  
  967 +?>
964 968 \ No newline at end of file
... ...
resources/js/search2widget.js 0 โ†’ 100644
  1 +Ext.onReady(function(){
  2 +
  3 +var bSearchOptionMetadataAndContent = true;
  4 +
  5 +Ext.BLANK_IMAGE_URL = '../../thirdpartyjs/extjs/resources/images/default/s.gif';
  6 +
  7 +function doAdvancedSearch()
  8 +{
  9 + document.location=rootURL + "/search2.php?action=guiBuilder";
  10 +}
  11 +
  12 +function doViewPreviousSearchResults()
  13 +{
  14 + document.location=rootURL + "/search2.php?action=searchResults";
  15 +}
  16 +
  17 +function onMetadataAndContentClick()
  18 +{
  19 + bSearchOptionMetadataAndContent = true;
  20 + Ext.example.msg(sSearchTranslations[0], sSearchTranslations[1]); /* Quick Search Options, Searches will now search both content and metadata */
  21 +}
  22 +
  23 +function onMetadataClick()
  24 +{
  25 + bSearchOptionMetadataAndContent = false;
  26 + Ext.example.msg(sSearchTranslations[0], sSearchTranslations[2]); /* Quick Search Options, Searches will now only search metadata */
  27 +}
  28 +
  29 +function onSavedSearchClick(item)
  30 +{
  31 + id = item.id.substr(11);
  32 + document.location=rootURL + "/search2.php?action=processSaved&fSavedSearchId=" + id;
  33 +}
  34 +
  35 +function onSearchClick(sender)
  36 +{
  37 +
  38 + var suffix = sender.id.substring(12);
  39 +
  40 + var text = Ext.get('txtSearchBar' + suffix).getValue(false);
  41 +
  42 + if (text == sSearchTranslations[12] || text == '')
  43 + {
  44 + Ext.example.msg(sSearchTranslations[3], sSearchTranslations[4]); /* Hint, Please enter some search criteria! */
  45 + return;
  46 + }
  47 +
  48 + var sq = document.getElementById('txtQuery');
  49 + var qg = document.getElementById('cbQuickGeneral');
  50 +
  51 + text = text.replace(/\"/g, "'");
  52 +
  53 + if (bSearchOptionMetadataAndContent)
  54 + {
  55 + sq.value = '(GeneralText contains "' + text + '")';
  56 + }
  57 + else
  58 + {
  59 + sq.value = '(Metadata contains "' + text + '")';
  60 + }
  61 + qg.value = bSearchOptionMetadataAndContent?1:0;
  62 +
  63 + var frm = document.getElementById('frmQuickSearch');
  64 + frm.submit();
  65 +
  66 +}
  67 +
  68 +function populateSavedSearch(menu)
  69 +{
  70 + if (aSavedSearches.length == 0)
  71 + {
  72 + return;
  73 + }
  74 + var item = menu.addMenuItem({
  75 + text: sSearchTranslations[5], /*Saved Searches*/
  76 + menu: {
  77 + items: []
  78 + }
  79 + });
  80 +
  81 + for(i=0;i<aSavedSearches.length;i++)
  82 + {
  83 + var search = aSavedSearches[i];
  84 + var name = search.name;
  85 +
  86 + item.menu.addMenuItem({
  87 + text: name,
  88 + id: 'miSavedItem' + search.id,
  89 + handler: onSavedSearchClick
  90 + });
  91 + }
  92 +}
  93 +
  94 +
  95 +
  96 +function createSearchBar(div, suffix)
  97 +{
  98 + var x = Ext.get(div);
  99 + if (x == null)
  100 + {
  101 + return;
  102 + }
  103 +
  104 + var button;
  105 +
  106 + if (suffix == 1)
  107 + {
  108 + var menu = new Ext.menu.Menu({
  109 + items: [
  110 + {
  111 + text: sSearchTranslations[6], /* Advanced Search */
  112 + handler: doAdvancedSearch
  113 + },
  114 + {
  115 + text: sSearchTranslations[7], /* Previous Search Results */
  116 + handler: doViewPreviousSearchResults
  117 + },
  118 + {
  119 + text: sSearchTranslations[8] , /*Quick Search Options*/
  120 + menu: {
  121 + items: [
  122 + new Ext.menu.CheckItem({
  123 + text: sSearchTranslations[9], /* content and metadata */
  124 + id: 'cbSearchOptionContentMetadata' + suffix,
  125 + checked: bSearchOptionMetadataAndContent,
  126 + group: 'options',
  127 + handler: onMetadataAndContentClick
  128 + }),
  129 + new Ext.menu.CheckItem({
  130 + text: sSearchTranslations[10], /* metadata */
  131 + checked: !bSearchOptionMetadataAndContent,
  132 + id: 'cbSearchOptionMetadata' + suffix,
  133 + group: 'options',
  134 + handler: onMetadataClick
  135 + })
  136 + ]
  137 + }
  138 + }
  139 + ]
  140 + });
  141 +
  142 +
  143 + button = new Ext.Toolbar.MenuButton({
  144 + text: sSearchTranslations[11], /* search */
  145 + handler: onSearchClick,
  146 + id: 'searchButton' + suffix,
  147 + //cls: 'x-btn-text-icon blist',
  148 + menu : menu
  149 + });
  150 +
  151 + populateSavedSearch(menu);
  152 +
  153 +
  154 +
  155 +
  156 + }
  157 + else
  158 + {
  159 + menu = null;
  160 + button = new Ext.Toolbar.Button({
  161 + text: sSearchTranslations[11], /* search */
  162 + pressed: true,
  163 + handler: onSearchClick,
  164 + id: 'searchButton' + suffix
  165 + //cls: 'x-btn-text-icon blist',
  166 +
  167 + });
  168 + }
  169 +
  170 + var tb = new Ext.Toolbar(div);
  171 +
  172 +
  173 +
  174 + tb.add(new Ext.form.TextField({
  175 + emptyText: sSearchTranslations[12], /* Enter search criteria... */
  176 + value: quickQuery,
  177 + selectOnFocus:true,
  178 + id:'txtSearchBar' + suffix,
  179 + width: 110
  180 + }), button);
  181 +
  182 + var map = new Ext.KeyMap("txtSearchBar" + suffix,
  183 + {
  184 + key: Ext.EventObject.ENTER,
  185 + fn: function() {
  186 + onSearchClick(Ext.get('txtSearchBar' + suffix));
  187 + }
  188 + });
  189 +
  190 + var el = Ext.get(div);
  191 + if (suffix == 1)
  192 + {
  193 + el.applyStyles('position:relative; top: -3px');
  194 + }
  195 + else
  196 + {
  197 + el.applyStyles('position:relative; left: 20px; top: 10px');
  198 + }
  199 +
  200 + return menu;
  201 +}
  202 +
  203 +/* create the top search widget */
  204 +var menu = createSearchBar('newSearchQuery',1);
  205 +
  206 +/* create the search portlet if possible */
  207 +createSearchBar('searchPortletCriteria',2);
  208 +
  209 +});
0 210 \ No newline at end of file
... ...
search2/search/fields/CheckedOutDeltaField.inc.php
... ... @@ -59,7 +59,7 @@ class CheckedOutDeltaField extends DBFieldExpr
59 59  
60 60 public function modifyValue($value)
61 61 {
62   - return "cast(cast($this->modifiedName as date) + $value as date)";
  62 + return "adddate(cast($this->modifiedName as date), interval '$value' day)";
63 63 }
64 64  
65 65 public function getInputRequirements()
... ...
search2/search/fields/CreatedDeltaField.inc.php
... ... @@ -59,7 +59,7 @@ class CreatedDeltaField extends DBFieldExpr
59 59  
60 60 public function modifyValue($value)
61 61 {
62   - return "cast(cast($this->modifiedName as date) + $value as date)";
  62 + return "adddate(cast($this->modifiedName as date), interval '$value' day)";
63 63 }
64 64  
65 65 public function getInputRequirements()
... ...
search2/search/fields/ModifiedDeltaField.inc.php
... ... @@ -58,7 +58,7 @@ class ModifiedDeltaField extends DBFieldExpr
58 58  
59 59 public function modifyValue($value)
60 60 {
61   - return "cast(cast($this->modifiedName as date) + $value as date)";
  61 + return "adddate(cast($this->modifiedName as date), interval '$value' day)";
62 62 }
63 63  
64 64 public function getInputRequirements()
... ...
sql/mysql/install/data.sql
No preview for this file type
sql/mysql/install/structure.sql
... ... @@ -474,12 +474,12 @@ CREATE TABLE `document_transaction_types_lookup` (
474 474 CREATE TABLE `document_transactions` (
475 475 `id` int(11) NOT NULL default '0',
476 476 `document_id` int(11) default NULL,
477   - `version` varchar(50) default NULL,
  477 + `version` float default NULL,
478 478 `user_id` int(11) default NULL,
479 479 `datetime` datetime NOT NULL default '0000-00-00 00:00:00',
480 480 `ip` varchar(15) default NULL,
481   - `filename` varchar(255) NOT NULL default '',
482   - `comment` varchar(1024) NOT NULL default '',
  481 + `filename` mediumtext NOT NULL default '',
  482 + `comment` mediumtext NOT NULL default '',
483 483 `transaction_namespace` varchar(255) NOT NULL default 'ktcore.transactions.event',
484 484 `session_id` int(11) default NULL,
485 485 `admin_mode` tinyint(1) NOT NULL default '0',
... ...
sql/mysql/upgrade/3.5.2/document_transactions.sql
1   -alter table document_transactions change version version varchar(50);
  1 +alter table document_transactions change version version float default NULL;
2 2 alter table document_transactions change ip ip varchar(15);
3   -alter table document_transactions change filename filename mediumtext;
4   -alter table document_transactions change comment comment mediumtext;
  3 +alter table document_transactions change filename filename mediumtext NOT NULL default '';
  4 +alter table document_transactions change comment comment mediumtext NOT NULL default '';
5 5 alter table document_transactions change transaction_namespace transaction_namespace varchar(255);
6 6 alter table document_transactions add index (`datetime`,`transaction_namespace`);
7 7 \ No newline at end of file
... ...
templates/kt3/standard_page.smarty
... ... @@ -53,6 +53,8 @@
53 53 <!-- Standalone Javascript. -->
54 54 {foreach item=sJavascript from=$page->getJSStandalone()}
55 55 <script type="text/javascript">
  56 + var rootURL = "{$absoluteRootUrl}";
  57 + var quickQuery = "{$search2_quickQuery}";
56 58 {$sJavascript}
57 59 </script>
58 60 {/foreach}
... ... @@ -90,123 +92,40 @@
90 92 <li><div id="menu_divider"></div></li>
91 93 {/foreach}
92 94  
93   - {literal}
  95 +
94 96 <script language="javascript">
95 97  
96   - function search(elname)
97   - {
98   - var sc = document.getElementById(elname);
99   - var val = sc.value;
100   -
101   - if (val == "{/literal}{i18n}Enter search criteria{/i18n}{literal}" || val == "")
102   - {
103   - alert('{/literal}{i18n}Please enter some search criteria{/i18n}{literal}');
104   - return;
105   - }
106   - var sq = document.getElementById('txtQuery');
107   -
108   - var so = document.getElementById('searchOptions');
109   -
110   - val = val.replace(/\"/g, "'");
111   -
112   - if (so.value == 's')
113   - {
114   - sq.value = '(GeneralText contains "' + val + '")';
115   - }
116   - else
117   - {
118   - sq.value = '(Metadata contains "' + val + '")';
119   - }
120   -
121   - var frm = document.getElementById('frmQuickSearch');
122   - frm.submit();
123   - }
124   - function processSearchEnter(event, elname)
125   - {
126   - var sc = document.getElementById(elname);
127   - if(event && event.which)
128   - {
129   - characterCode = event.which;
130   - }
131   - else
132   - {
133   - characterCode = event.keyCode;
134   - }
135   -
136   - if (characterCode.toString() == '13')
137   - search(elname);
138   -
139   - if (sc.value == "{/literal}{i18n}Enter search criteria{/i18n}{literal}")
140   - {
141   - sc.value = '';
142   - }
143   -
144   - return true;
145   - }
146   - function searchGotFocus(elname)
147   - {
148   - var sc = document.getElementById(elname);
149   - if (sc.value == "{/literal}{i18n}Enter search criteria{/i18n}{literal}")
150   - {
151   - sc.value = "";
152   - }
153   - }
154   - function searchLostFocus(elname)
155   - {
156   - var sc = document.getElementById(elname);
157   - if (sc.value == "")
158   - {
159   - sc.value = "{/literal}{i18n}Enter search criteria{/i18n}{literal}";
160   - }
161   - }
162   -
163   -
164   - function updateSelect(el, idx, value, name)
165   - {
166   - var elOptNew = new Option(name, value);
167   -
168   - var elOptOld = el.options[idx];
169   - try
170   - {
171   - el.add(elOptNew, elOptOld); // standards compliant; doesn't work in IE
172   - }
173   - catch(ex)
174   - {
175   - el.add(elOptNew, idx); // IE only
176   - }
177   - el.remove(idx+1);
178   - }
179   -
180   - function searchOptionSelect(elname)
181   - {
182   - var so = document.getElementById(elname);
183   - switch(so.value)
184   - {
185   - case '':
186   - break
187   - case 's':
188   - updateSelect(so, 1, 's', "{/literal}{i18n}content and metadata{/i18n}{literal} *");
189   - updateSelect(so, 2, 'm', "{/literal}{i18n}metadata{/i18n}{literal}");
190   - $('cbQuickGeneral').value = 1;
191   - break
192   - case 'm':
193   - updateSelect(so, 1, 's', "{/literal}{i18n}content and metadata{/i18n}{literal}");
194   - updateSelect(so, 2, 'm', "{/literal}{i18n}metadata{/i18n}{literal} *");
195   - $('cbQuickGeneral').value = 0;
196   - break;
197   - case 'A':
198   - document.location="{/literal}{$rootUrl}{literal}/search2.php?action=guiBuilder";
199   - break;
200   - case 'R':
201   - document.location="{/literal}{$rootUrl}{literal}/search2.php?action=searchResults";
202   - break;
203   - default:
204   - document.location="{/literal}{$rootUrl}{literal}/search2.php?action=processSaved&fSavedSearchId=" + so.value + "";
205   - break;
206   - }
207   - }
  98 + var sSearchTranslations =
  99 + [
  100 +
  101 + /* 0 */ "{i18n}Quick Search Options{/i18n}",
  102 + /* 1 */ "{i18n}Searches will now search both content and metadata{/i18n}",
  103 + /* 2 */ "{i18n}Searches will now only search metadata{/i18n}",
  104 + /* 3 */ "{i18n}Hint{/i18n}",
  105 + /* 4 */ "{i18n}Please enter some search criteria!{/i18n}",
  106 + /* 5 */ "{i18n}Saved Searches{/i18n}",
  107 + /* 6 */ "{i18n}Advanced Search{/i18n}",
  108 + /* 7 */ "{i18n}Previous Search Results{/i18n}",
  109 + /* 8 */ "{i18n}Quick Search Options{/i18n}",
  110 + /* 9 */ "{i18n}content and metadata{/i18n}",
  111 + /* 10 */ "{i18n}metadata{/i18n}",
  112 + /* 11 */ "{i18n}search{/i18n}",
  113 + /* 12 */ "{i18n}Enter search criteria...{/i18n}"
  114 +
  115 + ];
  116 +
  117 + var aSavedSearches = [
  118 + {assign var=count value=0}
  119 + {foreach item=searchitem from=$savedSearches}
  120 + {if $count>0},{/if}
  121 + {literal}{{/literal}id:{$searchitem.id},name:'{$searchitem.name|sanitize}'{literal}}{/literal}
  122 + {assign var=count value=$count+1}
  123 + {/foreach}
  124 + ];
208 125 </script>
209   - {/literal}
  126 + {literal}
  127 +
  128 + {/literal}
210 129 <!-- user menu -->
211 130 <li class="pref">
212 131 {if ($page->user)}
... ... @@ -231,28 +150,18 @@
231 150  
232 151 <li class="pref">
233 152 <div style="position: absolute;">
234   - <input id=searchCriteria value="{$search2_quickQuery|sanitize}" style="width:129px; font-size:12px; position:relative; top: -2px; left: -180px; z-index: 11"
235   - onfocus="searchGotFocus('searchCriteria')" onblur="searchLostFocus('searchCriteria')" onkeypress="return processSearchEnter(event,'searchCriteria')" >
236   - <img onclick="search('searchCriteria')" src="resources/tango-icons/system-search.png" border="0" style="position: relative; left: -183px; top: 4px; z-index: 11" />
237   - <select id=searchOptions style="width:170px; font-size:12px; position:absolute; left: -180px; z-index: 10" onchange="searchOptionSelect('searchOptions')">
238   - <option value="">--- {i18n}quick search{/i18n} ---
239   - <option value="s" {if $search2_general==1}selected{/if}>{i18n}content and metadata{/i18n} {if $search2_general==1}*{/if}
240   - <option value="m" {if $search2_general==0}selected{/if}>{i18n}metadata{/i18n} {if $search2_general==0}*{/if}
241   - <option value="">--- {i18n}search{/i18n} ---
242   - <option value="A">{i18n}Advanced Search{/i18n}
243   - <option value="R">{i18n}Previous Results{/i18n}
244   - {if count($savedSearches) > 0}
245   - <option value="">--- {i18n}saved searches{/i18n} ---
246   - {foreach item=searchitem from=$savedSearches}
247   - <option value="{$searchitem.id}">{$searchitem.name|sanitize}
248   - {/foreach}
249   - {/if}
250   - </select>
  153 +
  154 +
251 155 <form id=frmQuickSearch method=post action="{$rootUrl}/search2.php?action=process">
252 156 <input id=txtQuery name=txtQuery type=hidden>
253 157 <input type=hidden name="cbQuickQuery" id="cbQuickQuery" value="1">
254 158 <input type=hidden name="cbQuickGeneral" id="cbQuickGeneral" value="1"></form>
255 159 </div>
  160 +
  161 + <div id="newSearchQuery"/>
  162 +
  163 +
  164 +
256 165 </li>
257 166  
258 167 </ul>
... ... @@ -332,13 +241,13 @@
332 241 <div class="error_dashlet_rightrepeat_bottom"></div>
333 242 <div class="error_dashlet_leftrepeat_bottom"></div>
334 243 {foreach item=sError from=$page->errStack}
335   -
  244 +
336 245 {if ($page->booleanLink == '0')}
337 246 <p>{$sError|sanitize}</p>
338 247 {else}
339 248 <p>{$sError}</p>
340   - {/if}
341   -
  249 + {/if}
  250 +
342 251 {/foreach}
343 252 <div class="error_dashlet_topleft_small"></div>
344 253 <div class="error_dashlet_toprepeat_small"></div>
... ...
templates/ktcore/assist/assist_notification.smarty
... ... @@ -13,11 +13,11 @@
13 13 &nbsp;|&nbsp;
14 14 </div>
15 15  
16   - <a href="{ktLink base="notify.php" query="id=`$notify_id`&notify_action=clear"}
  16 + <a href='{ktLink base="notify.php" query="id=`$notify_id`&notify_action=clear"}'
17 17 kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"
18 18 class="ktAction ktInline ktDelete" style="position: relative;" >{i18n}Clear Alert{/i18n}</a>
19 19  
20   - <a href="{ktLink base="notify.php" query="id=`$notify_id`&notify_action=clear"}
  20 + <a href='{ktLink base="notify.php" query="id=`$notify_id`&notify_action=clear"}'
21 21 kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"">{i18n}Clear Alert{/i18n}</a>
22 22 </div>
23 23 </dd>
... ...
templates/ktcore/assist/assist_notification_details.smarty
... ... @@ -13,15 +13,15 @@
13 13  
14 14 <div class="actionoptions">
15 15 <div style="float:left; position: relative;">
16   - <a href="{ktLink base="notify.php" query="id=`$notify_id`&notify_action=view"}">{i18n}View Document{/i18n}</a>
  16 + <a href='{ktLink base="notify.php" query="id=`$notify_id`&notify_action=view"}'>{i18n}View Document{/i18n}</a>
17 17 &nbsp;|&nbsp;
18 18 </div>
19 19  
20   - <a href="{ktLink base="notify.php" query="id=`$notify_id`&notify_action=clear"}
  20 + <a href='{ktLink base="notify.php" query="id=`$notify_id`&notify_action=clear"}'
21 21 kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"
22 22 class="ktAction ktInline ktDelete" style="position: relative;" >{i18n}Clear Alert{/i18n}</a>
23 23  
24   - <a href="{ktLink base="notify.php" query="id=`$notify_id`&notify_action=clear"}
  24 + <a href='{ktLink base="notify.php" query="id=`$notify_id`&notify_action=clear"}'
25 25 kt:deleteMessage="{i18n}Are you sure you wish to clear the notification?{/i18n}"">{i18n}Clear Alert{/i18n}</a>
26 26 </div>
27 27  
... ...
templates/ktcore/search2/adv_query_builder.smarty
1   -{$context->oPage->requireCSSResource("thirdpartyjs/extjs/resources/css/ext-all.css")}
2   -
3   -{$context->oPage->requireJSResource("thirdpartyjs/extjs/adapter/ext/ext-base.js")}
4   -{$context->oPage->requireJSResource("thirdpartyjs/extjs/ext-all.js")}
5 1  
6 2  
7 3 {literal}
... ... @@ -320,7 +316,7 @@ function createFilesize(groupid, fid)
320 316 html += "<option>{/literal}{i18n}megabytes{/i18n}{literal}";
321 317 html += "<option>{/literal}{i18n}gigabytes{/i18n}{literal}";
322 318 html += "</SELECT>";
323   - html += "<input style=\"display: none\" value=\"1\" id=\"field" + groupid + "_" + fid + "start\">";
  319 + html += "<input style=\"display: none\" value=\"0\" id=\"field" + groupid + "_" + fid + "start\">";
324 320 html += "<td width=\"100%\">&nbsp;";
325 321  
326 322 html += "</table>";
... ... @@ -329,11 +325,11 @@ function createFilesize(groupid, fid)
329 325  
330 326 function createDateDiff(groupid, fid)
331 327 {
332   - var html = "<table><tr><td width=\"140\"";
  328 + var html = "<table><tr><td width=\"140\">";
333 329  
334 330 html += "<SELECT style=\"width: 140px\" id=\"field" + groupid + "_" + fid + "op\">";
335   - html += "<option value=\"is\">{/literal}{i18n}is{/i18n}{literal}";
336   - html += "<option value=\"is not\">{/literal}{i18n}is not{/i18n}{literal}";
  331 + html += "<option value=\"\<\">{/literal}{i18n}less than{/i18n}{literal}";
  332 + html += "<option value=\"\>\">{/literal}{i18n}greater than{/i18n}{literal}";
337 333 html += "</SELECT>"
338 334  
339 335  
... ...
templates/ktcore/search2/search_portlet.smarty
1   -<div style="position: absolute; left: 10px">
2   -<input id=searchPortletCriteria value="{$search2_quickQuery|sanitize}" style="width:150px; font-size:12px; position:relative; top: -2px; z-index: 11"
3   - onfocus="searchGotFocus('searchPortletCriteria')" onblur="searchLostFocus('searchPortletCriteria')" onkeypress="return processSearchEnter(event,'searchPortletCriteria')" >
4   -<img onclick="search('searchPortletCriteria')" src="resources/tango-icons/system-search.png" border="0" style="position: relative; left: -25px; top: 4px; z-index: 11" />
5   -<select id=searchPortletOptions style="width:170px; font-size:12px; position:absolute; left: -0px; z-index: 10" onchange="searchOptionSelect('searchPortletOptions')">
6   - <option value="s">--- {i18n}quick search{/i18n} ---
7   - <option value="s" {if $search2_general==1}selected{/if}>{i18n}content and metadata{/i18n} {if $search2_general==1}*{/if}
8   - <option value="m" {if $search2_general==0}selected{/if}>{i18n}metadata{/i18n} {if $search2_general==0}*{/if}
9   - </select>
10   -</div>
  1 +
  2 +<div id=searchPortletCriteria></div>
  3 +
11 4 <ul class="actionlist">
12 5 <li><a href="{$rootUrl}/search2.php?action=guiBuilder">{i18n}Advanced Search{/i18n}</a></li>
13 6 <li><a href="{$rootUrl}/search2.php?action=queryBuilder">{i18n}Search Criteria Editor{/i18n}</a></li>
14   -<li><a href="{$rootUrl}/search2.php?action=manage"><nobr>{i18n}Manage Saved Search Criteria{/i18n}</a></li>
  7 +<li><a href="{$rootUrl}/search2.php?action=manage"><nobr>{i18n}Manage Saved Search{/i18n}</a></li>
15 8 </ul>
16 9  
17 10 {if (count($savedSearches) > 0)}
... ...
templates/ktstandard/action/discussion_comment_list_item.smarty
... ... @@ -7,14 +7,14 @@
7 7 {/if}
8 8  
9 9 <dt>
10   - <span class="subject">{$comment->getSubject()|sanitize_input}</span>
  10 + <span class="subject">{$comment->getSubject()}</span>
11 11 by
12 12 <span class="author">{$creator->getName()}</span>
13 13 <span class="date">({$comment->getDate()})</span>
14 14  
15 15 </dt>
16 16  
17   - <dd>{$comment->getBody()|sanitize_input}</dd>
  17 + <dd>{$comment->getBody()}</dd>
18 18  
19 19 </dl>
20 20  
... ...
templates/ktstandard/authentication/ldapadduser.smarty
... ... @@ -10,7 +10,7 @@
10 10 <input type="hidden" name="dn" value="{$dn}" />
11 11 <input type="hidden" name="samaccountname" value="{$samaccountname}" />
12 12 <div class="form_actions">
13   - <input type="submit" name="submit[create]" value="{i18n}create user{/i18n}" />
  13 + <input type="submit" name="submit[create]" value="{i18n}Create user{/i18n}" />
14 14 <input type="submit" name="kt_cancel[]" value="{i18n}Cancel{/i18n}" />
15 15 </div>
16 16 </fieldset>
... ...
thirdpartyjs/extjs/ext-all.js
1   -/*
2   - * Ext JS Library 1.1 Beta 1
3   - * Copyright(c) 2006-2007, Ext JS, LLC.
4   - * licensing@extjs.com
5   - *
6   - * http://www.extjs.com/license
7   - */
8   -
  1 +/*
  2 + * Ext JS Library 1.1 Beta 1
  3 + * Copyright(c) 2006-2007, Ext JS, LLC.
  4 + * licensing@extjs.com
  5 + *
  6 + * http://www.extjs.com/license
  7 + */
  8 +
9 9  
10 10 Ext.DomHelper=function(){var _1=null;var _2=/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i;var _3=function(o){if(typeof o=="string"){return o;}var b="";if(!o.tag){o.tag="div";}b+="<"+o.tag;for(var _6 in o){if(_6=="tag"||_6=="children"||_6=="cn"||_6=="html"||typeof o[_6]=="function"){continue;}if(_6=="style"){var s=o["style"];if(typeof s=="function"){s=s.call();}if(typeof s=="string"){b+=" style=\""+s+"\"";}else{if(typeof s=="object"){b+=" style=\"";for(var _8 in s){if(typeof s[_8]!="function"){b+=_8+":"+s[_8]+";";}}b+="\"";}}}else{if(_6=="cls"){b+=" class=\""+o["cls"]+"\"";}else{if(_6=="htmlFor"){b+=" for=\""+o["htmlFor"]+"\"";}else{b+=" "+_6+"=\""+o[_6]+"\"";}}}}if(_2.test(o.tag)){b+="/>";}else{b+=">";var cn=o.children||o.cn;if(cn){if(cn instanceof Array){for(var i=0,_b=cn.length;i<_b;i++){b+=_3(cn[i],b);}}else{b+=_3(cn,b);}}if(o.html){b+=o.html;}b+="</"+o.tag+">";}return b;};var _c=function(o,_e){var el=document.createElement(o.tag);var _10=el.setAttribute?true:false;for(var _11 in o){if(_11=="tag"||_11=="children"||_11=="cn"||_11=="html"||_11=="style"||typeof o[_11]=="function"){continue;}if(_11=="cls"){el.className=o["cls"];}else{if(_10){el.setAttribute(_11,o[_11]);}else{el[_11]=o[_11];}}}Ext.DomHelper.applyStyles(el,o.style);var cn=o.children||o.cn;if(cn){if(cn instanceof Array){for(var i=0,len=cn.length;i<len;i++){_c(cn[i],el);}}else{_c(cn,el);}}if(o.html){el.innerHTML=o.html;}if(_e){_e.appendChild(el);}return el;};var _15=function(_16,s,h,e){_1.innerHTML=[s,h,e].join("");var i=-1,el=_1;while(++i<_16){el=el.firstChild;}return el;};var ts="<table>",te="</table>",tbs=ts+"<tbody>",tbe="</tbody>"+te,trs=tbs+"<tr>",tre="</tr>"+tbe;var _22=function(tag,_24,el,_26){if(!_1){_1=document.createElement("div");}var _27;var _28=null;if(tag=="td"){if(_24=="afterbegin"||_24=="beforeend"){return;}if(_24=="beforebegin"){_28=el;el=el.parentNode;}else{_28=el.nextSibling;el=el.parentNode;}_27=_15(4,trs,_26,tre);}else{if(tag=="tr"){if(_24=="beforebegin"){_28=el;el=el.parentNode;_27=_15(3,tbs,_26,tbe);}else{if(_24=="afterend"){_28=el.nextSibling;el=el.parentNode;_27=_15(3,tbs,_26,tbe);}else{if(_24=="afterbegin"){_28=el.firstChild;}_27=_15(4,trs,_26,tre);}}}else{if(tag=="tbody"){if(_24=="beforebegin"){_28=el;el=el.parentNode;_27=_15(2,ts,_26,te);}else{if(_24=="afterend"){_28=el.nextSibling;el=el.parentNode;_27=_15(2,ts,_26,te);}else{if(_24=="afterbegin"){_28=el.firstChild;}_27=_15(3,tbs,_26,tbe);}}}else{if(_24=="beforebegin"||_24=="afterend"){return;}if(_24=="afterbegin"){_28=el.firstChild;}_27=_15(2,ts,_26,te);}}}el.insertBefore(_27,_28);return _27;};return{useDom:false,markup:function(o){return _3(o);},applyStyles:function(el,_2b){if(_2b){el=Ext.fly(el);if(typeof _2b=="string"){var re=/\s?([a-z\-]*)\:\s?([^;]*);?/gi;var _2d;while((_2d=re.exec(_2b))!=null){el.setStyle(_2d[1],_2d[2]);}}else{if(typeof _2b=="object"){for(var _2e in _2b){el.setStyle(_2e,_2b[_2e]);}}else{if(typeof _2b=="function"){Ext.DomHelper.applyStyles(el,_2b.call());}}}}},insertHtml:function(_2f,el,_31){_2f=_2f.toLowerCase();if(el.insertAdjacentHTML){var tag=el.tagName.toLowerCase();if(tag=="table"||tag=="tbody"||tag=="tr"||tag=="td"){var rs;if(rs=_22(tag,_2f,el,_31)){return rs;}}switch(_2f){case"beforebegin":el.insertAdjacentHTML(_2f,_31);return el.previousSibling;case"afterbegin":el.insertAdjacentHTML(_2f,_31);return el.firstChild;case"beforeend":el.insertAdjacentHTML(_2f,_31);return el.lastChild;case"afterend":el.insertAdjacentHTML(_2f,_31);return el.nextSibling;}throw"Illegal insertion point -> \""+_2f+"\"";}var _34=el.ownerDocument.createRange();var _35;switch(_2f){case"beforebegin":_34.setStartBefore(el);_35=_34.createContextualFragment(_31);el.parentNode.insertBefore(_35,el);return el.previousSibling;case"afterbegin":if(el.firstChild){_34.setStartBefore(el.firstChild);_35=_34.createContextualFragment(_31);el.insertBefore(_35,el.firstChild);return el.firstChild;}else{el.innerHTML=_31;return el.firstChild;}case"beforeend":if(el.lastChild){_34.setStartAfter(el.lastChild);_35=_34.createContextualFragment(_31);el.appendChild(_35);return el.lastChild;}else{el.innerHTML=_31;return el.lastChild;}case"afterend":_34.setStartAfter(el);_35=_34.createContextualFragment(_31);el.parentNode.insertBefore(_35,el.nextSibling);return el.nextSibling;}throw"Illegal insertion point -> \""+_2f+"\"";},insertBefore:function(el,o,_38){return this.doInsert(el,o,_38,"beforeBegin");},insertAfter:function(el,o,_3b){return this.doInsert(el,o,_3b,"afterEnd","nextSibling");},insertFirst:function(el,o,_3e){return this.doInsert(el,o,_3e,"afterBegin");},doInsert:function(el,o,_41,pos,_43){el=Ext.getDom(el);var _44;if(this.useDom){_44=_c(o,null);el.parentNode.insertBefore(_44,_43?el[_43]:el);}else{var _45=_3(o);_44=this.insertHtml(pos,el,_45);}return _41?Ext.get(_44,true):_44;},append:function(el,o,_48){el=Ext.getDom(el);var _49;if(this.useDom){_49=_c(o,null);el.appendChild(_49);}else{var _4a=_3(o);_49=this.insertHtml("beforeEnd",el,_4a);}return _48?Ext.get(_49,true):_49;},overwrite:function(el,o,_4d){el=Ext.getDom(el);el.innerHTML=_3(o);return _4d?Ext.get(el.firstChild,true):el.firstChild;},createTemplate:function(o){var _4f=_3(o);return new Ext.Template(_4f);}};}();
11 11  
... ... @@ -119,7 +119,7 @@ Ext.Button=function(_1,_2){Ext.apply(this,_2);this.addEvents({&quot;click&quot;:true,&quot;togg
119 119  
120 120 Ext.MenuButton=function(_1,_2){Ext.MenuButton.superclass.constructor.call(this,_1,_2);this.addEvents({"arrowclick":true});};Ext.extend(Ext.MenuButton,Ext.Button,{render:function(_3){var _4=new Ext.Template("<table cellspacing=\"0\" class=\"x-btn-menu-wrap x-btn\"><tr><td>","<table cellspacing=\"0\" class=\"x-btn-wrap x-btn-menu-text-wrap\"><tbody>","<tr><td class=\"x-btn-left\"><i>&#160;</i></td><td class=\"x-btn-center\"><button class=\"x-btn-text\" type=\"{1}\">{0}</button></td></tr>","</tbody></table></td><td>","<table cellspacing=\"0\" class=\"x-btn-wrap x-btn-menu-arrow-wrap\"><tbody>","<tr><td class=\"x-btn-center\"><button class=\"x-btn-menu-arrow-el\" type=\"button\">&#160;</button></td><td class=\"x-btn-right\"><i>&#160;</i></td></tr>","</tbody></table></td></tr></table>");var _5=_4.append(_3,[this.text,this.type],true);if(this.cls){_5.addClass(this.cls);}if(this.icon){_5.child("button").setStyle("background-image","url("+this.icon+")");}this.el=_5;if(this.handleMouseEvents){_5.on("mouseover",this.onMouseOver,this);_5.on("mouseout",this.onMouseOut,this);_5.on("mousedown",this.onMouseDown,this);_5.on("mouseup",this.onMouseUp,this);}_5.on(this.clickEvent,this.onClick,this);if(this.tooltip){var _6=_5.child("button:first");if(typeof this.tooltip=="object"){Ext.QuickTips.tips(Ext.apply({target:_6.id},this.tooltip));}else{_6.dom[this.tooltipType]=this.tooltip;}}if(this.arrowTooltip){var _6=_5.child("button:nth(2)");_6.dom[this.tooltipType]=this.arrowTooltip;}if(this.hidden){this.hide();}if(this.disabled){this.disable();}if(Ext.isIE&&!Ext.isIE7){this.autoWidth.defer(1,this);}else{this.autoWidth();}if(this.menu){this.menu.on("show",this.onMenuShow,this);this.menu.on("hide",this.onMenuHide,this);}},autoWidth:function(){if(this.el){var _7=this.el.child("table:first");var _8=this.el.child("table:last");this.el.setWidth("auto");_7.setWidth("auto");if(Ext.isIE7&&Ext.isStrict){var ib=this.el.child("button:first");if(ib&&ib.getWidth()>20){ib.clip();ib.setWidth(Ext.util.TextMetrics.measure(ib,this.text).width+ib.getFrameWidth("lr"));}}if(this.minWidth){if(this.hidden){this.el.beginMeasure();}if((_7.getWidth()+_8.getWidth())<this.minWidth){_7.setWidth(this.minWidth-_8.getWidth());}if(this.hidden){this.el.endMeasure();}}this.el.setWidth(_7.getWidth()+_8.getWidth());}},setHandler:function(_a,_b){this.handler=_a;this.scope=_b;},setArrowHandler:function(_c,_d){this.arrowHandler=_c;this.scope=_d;},focus:function(){if(this.el){this.el.child("button:first").focus();}},onClick:function(e){e.preventDefault();if(!this.disabled){if(e.getTarget(".x-btn-menu-arrow-wrap")){if(this.menu&&!this.menu.isVisible()){this.menu.show(this.el,this.menuAlign);}this.fireEvent("arrowclick",this,e);if(this.arrowHandler){this.arrowHandler.call(this.scope||this,this,e);}}else{this.fireEvent("click",this,e);if(this.handler){this.handler.call(this.scope||this,this,e);}}}},onMouseDown:function(e){if(!this.disabled){Ext.fly(e.getTarget("table")).addClass("x-btn-click");}},onMouseUp:function(e){Ext.fly(e.getTarget("table")).removeClass("x-btn-click");}});
121 121  
122   -Ext.Toolbar=function(_1,_2,_3){if(_1 instanceof Array){_2=_1;_3=_2;_1=null;}Ext.apply(this,_3);this.buttons=_2;if(_1){this.render(_1);}};Ext.Toolbar.prototype={render:function(ct){this.el=Ext.get(ct);if(this.cls){this.el.addClass(this.cls);}this.el.update("<div class=\"x-toolbar x-small-editor\"><table cellspacing=\"0\"><tr></tr></table></div>");this.tr=this.el.child("tr",true);var _5=0;this.items=new Ext.util.MixedCollection(false,function(o){return o.id||("item"+(++_5));});if(this.buttons){this.add.apply(this,this.buttons);delete this.buttons;}},add:function(){var a=arguments,l=a.length;for(var i=0;i<l;i++){var el=a[i];if(el.applyTo){this.addField(el);}else{if(el.render){this.addItem(el);}else{if(typeof el=="string"){if(el=="separator"||el=="-"){this.addSeparator();}else{if(el==" "){this.addSpacer();}else{if(el=="->"){this.addFill();}else{this.addText(el);}}}}else{if(el.tagName){this.addElement(el);}else{if(typeof el=="object"){this.addButton(el);}}}}}}},getEl:function(){return this.el;},addSeparator:function(){return this.addItem(new Ext.Toolbar.Separator());},addSpacer:function(){return this.addItem(new Ext.Toolbar.Spacer());},addFill:function(){return this.addItem(new Ext.Toolbar.Fill());},addElement:function(el){return this.addItem(new Ext.Toolbar.Item(el));},addItem:function(_c){var td=this.nextBlock();_c.render(td);this.items.add(_c);return _c;},addButton:function(_e){if(_e instanceof Array){var _f=[];for(var i=0,len=_e.length;i<len;i++){_f.push(this.addButton(_e[i]));}return _f;}var b=_e;if(!(_e instanceof Ext.Toolbar.Button)){b=new Ext.Toolbar.Button(_e);}var td=this.nextBlock();b.render(td);this.items.add(b);return b;},addText:function(_14){return this.addItem(new Ext.Toolbar.TextItem(_14));},insertButton:function(_15,_16){if(_16 instanceof Array){var _17=[];for(var i=0,len=_16.length;i<len;i++){_17.push(this.insertButton(_15+i,_16[i]));}return _17;}if(!(_16 instanceof Ext.Toolbar.Button)){_16=new Ext.Toolbar.Button(_16);}var td=document.createElement("td");this.tr.insertBefore(td,this.tr.childNodes[_15]);_16.render(td);this.items.insert(_15,_16);return _16;},addDom:function(_1b,_1c){var td=this.nextBlock();Ext.DomHelper.overwrite(td,_1b);var ti=new Ext.Toolbar.Item(td.firstChild);ti.render(td);this.items.add(ti);return ti;},addField:function(_1f){var td=this.nextBlock();_1f.render(td);var ti=new Ext.Toolbar.Item(td.firstChild);ti.render(td);this.items.add(ti);return ti;},nextBlock:function(){var td=document.createElement("td");this.tr.appendChild(td);return td;},destroy:function(){if(this.items){Ext.destroy.apply(Ext,this.items.items);}Ext.Element.uncache(this.el,this.tr);}};Ext.Toolbar.Item=function(el){this.el=Ext.getDom(el);this.id=Ext.id(this.el);this.hidden=false;};Ext.Toolbar.Item.prototype={getEl:function(){return this.el;},render:function(td){this.td=td;td.appendChild(this.el);},destroy:function(){this.td.parentNode.removeChild(this.td);},show:function(){this.hidden=false;this.td.style.display="";},hide:function(){this.hidden=true;this.td.style.display="none";},setVisible:function(_25){if(_25){this.show();}else{this.hide();}},focus:function(){Ext.fly(this.el).focus();},disable:function(){Ext.fly(this.td).addClass("x-item-disabled");this.disabled=true;this.el.disabled=true;},enable:function(){Ext.fly(this.td).removeClass("x-item-disabled");this.disabled=false;this.el.disabled=false;}};Ext.Toolbar.Separator=function(){var s=document.createElement("span");s.className="ytb-sep";Ext.Toolbar.Separator.superclass.constructor.call(this,s);};Ext.extend(Ext.Toolbar.Separator,Ext.Toolbar.Item,{enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.Toolbar.Spacer=function(){var s=document.createElement("div");s.className="ytb-spacer";Ext.Toolbar.Spacer.superclass.constructor.call(this,s);};Ext.extend(Ext.Toolbar.Spacer,Ext.Toolbar.Item,{enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.Toolbar.Fill=Ext.extend(Ext.Toolbar.Spacer,{render:function(td){td.style.width="100%";Ext.Toolbar.Fill.superclass.render.call(this,td);}});Ext.Toolbar.TextItem=function(_29){var s=document.createElement("span");s.className="ytb-text";s.innerHTML=_29;Ext.Toolbar.TextItem.superclass.constructor.call(this,s);};Ext.extend(Ext.Toolbar.TextItem,Ext.Toolbar.Item,{enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.Toolbar.Button=function(_2b){Ext.Toolbar.Button.superclass.constructor.call(this,null,_2b);};Ext.extend(Ext.Toolbar.Button,Ext.Button,{render:function(td){this.td=td;Ext.Toolbar.Button.superclass.render.call(this,td);},destroy:function(){Ext.Toolbar.Button.superclass.destroy.call(this);this.td.parentNode.removeChild(this.td);},show:function(){this.hidden=false;this.td.style.display="";},hide:function(){this.hidden=true;this.td.style.display="none";},disable:function(){Ext.fly(this.td).addClass("x-item-disabled");this.disabled=true;},enable:function(){Ext.fly(this.td).removeClass("x-item-disabled");this.disabled=false;}});Ext.ToolbarButton=Ext.Toolbar.Button;Ext.Toolbar.MenuButton=function(_2d){Ext.Toolbar.MenuButton.superclass.constructor.call(this,null,_2d);};Ext.extend(Ext.Toolbar.MenuButton,Ext.MenuButton,{render:function(td){this.td=td;Ext.Toolbar.MenuButton.superclass.render.call(this,td);},destroy:function(){Ext.Toolbar.MenuButton.superclass.destroy.call(this);this.td.parentNode.removeChild(this.td);},show:function(){this.hidden=false;this.td.style.display="";},hide:function(){this.hidden=true;this.td.style.display="none";}});
  122 +Ext.Toolbar=function(_1,_2,_3){if(_1 instanceof Array){_2=_1;_3=_2;_1=null;}Ext.apply(this,_3);this.buttons=_2;if(_1){this.render(_1);}};Ext.Toolbar.prototype={render:function(ct){this.el=Ext.get(ct);if(this.cls){this.el.addClass(this.cls);}this.el.update("<div class=\""+this.cls+" x-small-editor\"><table cellspacing=\"0\"><tr></tr></table></div>");this.tr=this.el.child("tr",true);var _5=0;this.items=new Ext.util.MixedCollection(false,function(o){return o.id||("item"+(++_5));});if(this.buttons){this.add.apply(this,this.buttons);delete this.buttons;}},add:function(){var a=arguments,l=a.length;for(var i=0;i<l;i++){var el=a[i];if(el.applyTo){this.addField(el);}else{if(el.render){this.addItem(el);}else{if(typeof el=="string"){if(el=="separator"||el=="-"){this.addSeparator();}else{if(el==" "){this.addSpacer();}else{if(el=="->"){this.addFill();}else{this.addText(el);}}}}else{if(el.tagName){this.addElement(el);}else{if(typeof el=="object"){this.addButton(el);}}}}}}},getEl:function(){return this.el;},addSeparator:function(){return this.addItem(new Ext.Toolbar.Separator());},addSpacer:function(){return this.addItem(new Ext.Toolbar.Spacer());},addFill:function(){return this.addItem(new Ext.Toolbar.Fill());},addElement:function(el){return this.addItem(new Ext.Toolbar.Item(el));},addItem:function(_c){var td=this.nextBlock();_c.render(td);this.items.add(_c);return _c;},addButton:function(_e){if(_e instanceof Array){var _f=[];for(var i=0,len=_e.length;i<len;i++){_f.push(this.addButton(_e[i]));}return _f;}var b=_e;if(!(_e instanceof Ext.Toolbar.Button)){b=new Ext.Toolbar.Button(_e);}var td=this.nextBlock();b.render(td);this.items.add(b);return b;},addText:function(_14){return this.addItem(new Ext.Toolbar.TextItem(_14));},insertButton:function(_15,_16){if(_16 instanceof Array){var _17=[];for(var i=0,len=_16.length;i<len;i++){_17.push(this.insertButton(_15+i,_16[i]));}return _17;}if(!(_16 instanceof Ext.Toolbar.Button)){_16=new Ext.Toolbar.Button(_16);}var td=document.createElement("td");this.tr.insertBefore(td,this.tr.childNodes[_15]);_16.render(td);this.items.insert(_15,_16);return _16;},addDom:function(_1b,_1c){var td=this.nextBlock();Ext.DomHelper.overwrite(td,_1b);var ti=new Ext.Toolbar.Item(td.firstChild);ti.render(td);this.items.add(ti);return ti;},addField:function(_1f){var td=this.nextBlock();_1f.render(td);var ti=new Ext.Toolbar.Item(td.firstChild);ti.render(td);this.items.add(ti);return ti;},nextBlock:function(){var td=document.createElement("td");this.tr.appendChild(td);return td;},destroy:function(){if(this.items){Ext.destroy.apply(Ext,this.items.items);}Ext.Element.uncache(this.el,this.tr);}};Ext.Toolbar.Item=function(el){this.el=Ext.getDom(el);this.id=Ext.id(this.el);this.hidden=false;};Ext.Toolbar.Item.prototype={getEl:function(){return this.el;},render:function(td){this.td=td;td.appendChild(this.el);},destroy:function(){this.td.parentNode.removeChild(this.td);},show:function(){this.hidden=false;this.td.style.display="";},hide:function(){this.hidden=true;this.td.style.display="none";},setVisible:function(_25){if(_25){this.show();}else{this.hide();}},focus:function(){Ext.fly(this.el).focus();},disable:function(){Ext.fly(this.td).addClass("x-item-disabled");this.disabled=true;this.el.disabled=true;},enable:function(){Ext.fly(this.td).removeClass("x-item-disabled");this.disabled=false;this.el.disabled=false;}};Ext.Toolbar.Separator=function(){var s=document.createElement("span");s.className="ytb-sep";Ext.Toolbar.Separator.superclass.constructor.call(this,s);};Ext.extend(Ext.Toolbar.Separator,Ext.Toolbar.Item,{enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.Toolbar.Spacer=function(){var s=document.createElement("div");s.className="ytb-spacer";Ext.Toolbar.Spacer.superclass.constructor.call(this,s);};Ext.extend(Ext.Toolbar.Spacer,Ext.Toolbar.Item,{enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.Toolbar.Fill=Ext.extend(Ext.Toolbar.Spacer,{render:function(td){td.style.width="100%";Ext.Toolbar.Fill.superclass.render.call(this,td);}});Ext.Toolbar.TextItem=function(_29){var s=document.createElement("span");s.className="ytb-text";s.innerHTML=_29;Ext.Toolbar.TextItem.superclass.constructor.call(this,s);};Ext.extend(Ext.Toolbar.TextItem,Ext.Toolbar.Item,{enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.Toolbar.Button=function(_2b){Ext.Toolbar.Button.superclass.constructor.call(this,null,_2b);};Ext.extend(Ext.Toolbar.Button,Ext.Button,{render:function(td){this.td=td;Ext.Toolbar.Button.superclass.render.call(this,td);},destroy:function(){Ext.Toolbar.Button.superclass.destroy.call(this);this.td.parentNode.removeChild(this.td);},show:function(){this.hidden=false;this.td.style.display="";},hide:function(){this.hidden=true;this.td.style.display="none";},disable:function(){Ext.fly(this.td).addClass("x-item-disabled");this.disabled=true;},enable:function(){Ext.fly(this.td).removeClass("x-item-disabled");this.disabled=false;}});Ext.ToolbarButton=Ext.Toolbar.Button;Ext.Toolbar.MenuButton=function(_2d){Ext.Toolbar.MenuButton.superclass.constructor.call(this,null,_2d);};Ext.extend(Ext.Toolbar.MenuButton,Ext.MenuButton,{render:function(td){this.td=td;Ext.Toolbar.MenuButton.superclass.render.call(this,td);},destroy:function(){Ext.Toolbar.MenuButton.superclass.destroy.call(this);this.td.parentNode.removeChild(this.td);},show:function(){this.hidden=false;this.td.style.display="";},hide:function(){this.hidden=true;this.td.style.display="none";}});
123 123  
124 124 Ext.PagingToolbar=function(el,ds,_3){Ext.PagingToolbar.superclass.constructor.call(this,el,null,_3);this.ds=ds;this.cursor=0;this.renderButtons(this.el);this.bind(ds);};Ext.extend(Ext.PagingToolbar,Ext.Toolbar,{pageSize:20,displayMsg:"Displaying {0} - {1} of {2}",emptyMsg:"No data to display",beforePageText:"Page",afterPageText:"of {0}",firstText:"First Page",prevText:"Previous Page",nextText:"Next Page",lastText:"Last Page",refreshText:"Refresh",renderButtons:function(el){Ext.PagingToolbar.superclass.render.call(this,el);this.first=this.addButton({tooltip:this.firstText,cls:"x-btn-icon x-grid-page-first",disabled:true,handler:this.onClick.createDelegate(this,["first"])});this.prev=this.addButton({tooltip:this.prevText,cls:"x-btn-icon x-grid-page-prev",disabled:true,handler:this.onClick.createDelegate(this,["prev"])});this.addSeparator();this.add(this.beforePageText);this.field=Ext.get(this.addDom({tag:"input",type:"text",size:"3",value:"1",cls:"x-grid-page-number"}).el);this.field.on("keydown",this.onPagingKeydown,this);this.field.on("focus",function(){this.dom.select();});this.afterTextEl=this.addText(String.format(this.afterPageText,1));this.field.setHeight(18);this.addSeparator();this.next=this.addButton({tooltip:this.nextText,cls:"x-btn-icon x-grid-page-next",disabled:true,handler:this.onClick.createDelegate(this,["next"])});this.last=this.addButton({tooltip:this.lastText,cls:"x-btn-icon x-grid-page-last",disabled:true,handler:this.onClick.createDelegate(this,["last"])});this.addSeparator();this.loading=this.addButton({tooltip:this.refreshText,cls:"x-btn-icon x-grid-loading",disabled:true,handler:this.onClick.createDelegate(this,["refresh"])});if(this.displayInfo){this.displayEl=Ext.fly(this.el.dom.firstChild).createChild({cls:"x-paging-info"});}},updateInfo:function(){if(this.displayEl){var _5=this.ds.getCount();var _6=_5==0?this.emptyMsg:String.format(this.displayMsg,this.cursor+1,this.cursor+_5,this.ds.getTotalCount());this.displayEl.update(_6);}},onLoad:function(ds,r,o){this.cursor=o.params?o.params.start:0;var d=this.getPageData(),ap=d.activePage,ps=d.pages;this.afterTextEl.el.innerHTML=String.format(this.afterPageText,d.pages);this.field.dom.value=ap;this.first.setDisabled(ap==1);this.prev.setDisabled(ap==1);this.next.setDisabled(ap==ps);this.last.setDisabled(ap==ps);this.loading.enable();this.updateInfo();},getPageData:function(){var _d=this.ds.getTotalCount();return{total:_d,activePage:Math.ceil((this.cursor+this.pageSize)/this.pageSize),pages:_d<this.pageSize?1:Math.ceil(_d/this.pageSize)};},onLoadError:function(){this.loading.enable();},onPagingKeydown:function(e){var k=e.getKey();var d=this.getPageData();if(k==e.RETURN){var v=this.field.dom.value,_12;if(!v||isNaN(_12=parseInt(v,10))){this.field.dom.value=d.activePage;return;}_12=Math.min(Math.max(1,_12),d.pages)-1;this.ds.load({params:{start:_12*this.pageSize,limit:this.pageSize}});e.stopEvent();}else{if(k==e.HOME||(k==e.UP&&e.ctrlKey)||(k==e.PAGEUP&&e.ctrlKey)||(k==e.RIGHT&&e.ctrlKey)||k==e.END||(k==e.DOWN&&e.ctrlKey)||(k==e.LEFT&&e.ctrlKey)||(k==e.PAGEDOWN&&e.ctrlKey)){var _12=(k==e.HOME||(k==e.DOWN&&e.ctrlKey)||(k==e.LEFT&&e.ctrlKey)||(k==e.PAGEDOWN&&e.ctrlKey))?1:d.pages;this.field.dom.value=_12;this.ds.load({params:{start:(_12-1)*this.pageSize,limit:this.pageSize}});e.stopEvent();}else{if(k==e.UP||k==e.RIGHT||k==e.PAGEUP||k==e.DOWN||k==e.LEFT||k==e.PAGEDOWN){var v=this.field.dom.value,_12;var _13=(e.shiftKey)?10:1;if(k==e.DOWN||k==e.LEFT||k==e.PAGEDOWN){_13*=-1;}if(!v||isNaN(_12=parseInt(v,10))){this.field.dom.value=d.activePage;return;}else{if(parseInt(v,10)+_13>=1&parseInt(v,10)+_13<=d.pages){this.field.dom.value=parseInt(v,10)+_13;_12=Math.min(Math.max(1,_12+_13),d.pages)-1;this.ds.load({params:{start:_12*this.pageSize,limit:this.pageSize}});}}e.stopEvent();}}}},beforeLoad:function(){if(this.loading){this.loading.disable();}},onClick:function(_14){var ds=this.ds;switch(_14){case"first":ds.load({params:{start:0,limit:this.pageSize}});break;case"prev":ds.load({params:{start:Math.max(0,this.cursor-this.pageSize),limit:this.pageSize}});break;case"next":ds.load({params:{start:this.cursor+this.pageSize,limit:this.pageSize}});break;case"last":var _16=ds.getTotalCount();var _17=_16%this.pageSize;var _18=_17?(_16-_17):_16-this.pageSize;ds.load({params:{start:_18,limit:this.pageSize}});break;case"refresh":ds.load({params:{start:this.cursor,limit:this.pageSize}});break;}},unbind:function(ds){ds.un("beforeload",this.beforeLoad,this);ds.un("load",this.onLoad,this);ds.un("loadexception",this.onLoadError,this);this.ds=undefined;},bind:function(ds){ds.on("beforeload",this.beforeLoad,this);ds.on("load",this.onLoad,this);ds.on("loadexception",this.onLoadError,this);this.ds=ds;}});
125 125  
... ...