Merge branch 'seeddms-5.1.x' into seeddms-6.0.x
|
@ -216,6 +216,8 @@
|
||||||
- more settings to disable import and download of extensions
|
- more settings to disable import and download of extensions
|
||||||
- add new configuration for excluding sequence and comment when creating
|
- add new configuration for excluding sequence and comment when creating
|
||||||
a folder
|
a folder
|
||||||
|
- get zendframework from pkgist
|
||||||
|
- auto generate path if not set in settings.xml
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
Changes in version 5.1.23
|
Changes in version 5.1.23
|
||||||
|
|
|
@ -1241,7 +1241,7 @@ class SeedDMS_Core_DMS {
|
||||||
|
|
||||||
$selectStr .= ", `tblDocumentReviewLog`.`date` as `duedate` ";
|
$selectStr .= ", `tblDocumentReviewLog`.`date` as `duedate` ";
|
||||||
$queryStr .=
|
$queryStr .=
|
||||||
"LEFT JOIN `tblDocumentReviewers` on `ttcontentid`.`document`=`tblDocumentReviewers`.`documentID` AND `ttcontentid`.`maxVersion`=`tblDocumentReviewers`.`version` ".
|
"LEFT JOIN `tblDocumentReviewers` ON `ttcontentid`.`document`=`tblDocumentReviewers`.`documentID` AND `ttcontentid`.`maxVersion`=`tblDocumentReviewers`.`version` ".
|
||||||
"LEFT JOIN `ttreviewid` ON `ttreviewid`.`reviewID` = `tblDocumentReviewers`.`reviewID` ".
|
"LEFT JOIN `ttreviewid` ON `ttreviewid`.`reviewID` = `tblDocumentReviewers`.`reviewID` ".
|
||||||
"LEFT JOIN `tblDocumentReviewLog` ON `tblDocumentReviewLog`.`reviewLogID`=`ttreviewid`.`maxLogID` ";
|
"LEFT JOIN `tblDocumentReviewLog` ON `tblDocumentReviewLog`.`reviewLogID`=`ttreviewid`.`maxLogID` ";
|
||||||
|
|
||||||
|
@ -1323,7 +1323,7 @@ class SeedDMS_Core_DMS {
|
||||||
|
|
||||||
$selectStr .= ", `tblDocumentApproveLog`.`date` as `duedate` ";
|
$selectStr .= ", `tblDocumentApproveLog`.`date` as `duedate` ";
|
||||||
$queryStr .=
|
$queryStr .=
|
||||||
"LEFT JOIN `tblDocumentApprovers` on `ttcontentid`.`document`=`tblDocumentApprovers`.`documentID` AND `ttcontentid`.`maxVersion`=`tblDocumentApprovers`.`version` ".
|
"LEFT JOIN `tblDocumentApprovers` ON `ttcontentid`.`document`=`tblDocumentApprovers`.`documentID` AND `ttcontentid`.`maxVersion`=`tblDocumentApprovers`.`version` ".
|
||||||
"LEFT JOIN `ttapproveid` ON `ttapproveid`.`approveID` = `tblDocumentApprovers`.`approveID` ".
|
"LEFT JOIN `ttapproveid` ON `ttapproveid`.`approveID` = `tblDocumentApprovers`.`approveID` ".
|
||||||
"LEFT JOIN `tblDocumentApproveLog` ON `tblDocumentApproveLog`.`approveLogID`=`ttapproveid`.`maxLogID` ";
|
"LEFT JOIN `tblDocumentApproveLog` ON `tblDocumentApproveLog`.`approveLogID`=`ttapproveid`.`maxLogID` ";
|
||||||
|
|
||||||
|
@ -1620,10 +1620,10 @@ class SeedDMS_Core_DMS {
|
||||||
}
|
}
|
||||||
$selectStr = 'distinct '.$selectStr;
|
$selectStr = 'distinct '.$selectStr;
|
||||||
$queryStr .=
|
$queryStr .=
|
||||||
"LEFT JOIN `tblWorkflowDocumentContent` on `ttcontentid`.`document`=`tblWorkflowDocumentContent`.`document` AND `ttcontentid`.`maxVersion`=`tblWorkflowDocumentContent`.`version` ".
|
"LEFT JOIN `tblWorkflowDocumentContent` ON `ttcontentid`.`document`=`tblWorkflowDocumentContent`.`document` AND `ttcontentid`.`maxVersion`=`tblWorkflowDocumentContent`.`version` ".
|
||||||
"LEFT JOIN `tblWorkflowTransitions` on `tblWorkflowDocumentContent`.`workflow`=`tblWorkflowTransitions`.`workflow` AND `tblWorkflowDocumentContent`.`state`=`tblWorkflowTransitions`.`state` ".
|
"LEFT JOIN `tblWorkflowTransitions` ON `tblWorkflowDocumentContent`.`workflow`=`tblWorkflowTransitions`.`workflow` AND `tblWorkflowDocumentContent`.`state`=`tblWorkflowTransitions`.`state` ".
|
||||||
"LEFT JOIN `tblWorkflowTransitionUsers` on `tblWorkflowTransitionUsers`.`transition` = `tblWorkflowTransitions`.`id` ".
|
"LEFT JOIN `tblWorkflowTransitionUsers` ON `tblWorkflowTransitionUsers`.`transition` = `tblWorkflowTransitions`.`id` ".
|
||||||
"LEFT JOIN `tblWorkflowTransitionGroups` on `tblWorkflowTransitionGroups`.`transition` = `tblWorkflowTransitions`.`id` ";
|
"LEFT JOIN `tblWorkflowTransitionGroups` ON `tblWorkflowTransitionGroups`.`transition` = `tblWorkflowTransitions`.`id` ";
|
||||||
|
|
||||||
if($user) {
|
if($user) {
|
||||||
$queryStr .= "WHERE (`tblWorkflowTransitionUsers`.`userid` = ".$user->getID()." ";
|
$queryStr .= "WHERE (`tblWorkflowTransitionUsers`.`userid` = ".$user->getID()." ";
|
||||||
|
@ -3151,8 +3151,10 @@ class SeedDMS_Core_DMS {
|
||||||
|
|
||||||
$queryStr = "SELECT * FROM `tblCategory` WHERE `id` = " . (int) $id;
|
$queryStr = "SELECT * FROM `tblCategory` WHERE `id` = " . (int) $id;
|
||||||
$resArr = $this->db->getResultArray($queryStr);
|
$resArr = $this->db->getResultArray($queryStr);
|
||||||
if ((is_bool($resArr) && !$resArr) || (count($resArr) != 1))
|
if (is_bool($resArr) && !$resArr)
|
||||||
return false;
|
return false;
|
||||||
|
if (count($resArr) != 1)
|
||||||
|
return null;
|
||||||
|
|
||||||
$resArr = $resArr[0];
|
$resArr = $resArr[0];
|
||||||
$cat = new SeedDMS_Core_DocumentCategory($resArr["id"], $resArr["name"]);
|
$cat = new SeedDMS_Core_DocumentCategory($resArr["id"], $resArr["name"]);
|
||||||
|
@ -3189,7 +3191,7 @@ class SeedDMS_Core_DMS {
|
||||||
$name = trim($name);
|
$name = trim($name);
|
||||||
if (!$name) return false;
|
if (!$name) return false;
|
||||||
|
|
||||||
$queryStr = "SELECT * FROM `tblCategory` where `name`=".$this->db->qstr($name);
|
$queryStr = "SELECT * FROM `tblCategory` WHERE `name`=".$this->db->qstr($name);
|
||||||
$resArr = $this->db->getResultArray($queryStr);
|
$resArr = $this->db->getResultArray($queryStr);
|
||||||
if (!$resArr)
|
if (!$resArr)
|
||||||
return false;
|
return false;
|
||||||
|
@ -3279,7 +3281,7 @@ class SeedDMS_Core_DMS {
|
||||||
*/
|
*/
|
||||||
function checkPasswordRequest($hash) { /* {{{ */
|
function checkPasswordRequest($hash) { /* {{{ */
|
||||||
/* Get the password request from the database */
|
/* Get the password request from the database */
|
||||||
$queryStr = "SELECT * FROM `tblUserPasswordRequest` where `hash`=".$this->db->qstr($hash);
|
$queryStr = "SELECT * FROM `tblUserPasswordRequest` WHERE `hash`=".$this->db->qstr($hash);
|
||||||
$resArr = $this->db->getResultArray($queryStr);
|
$resArr = $this->db->getResultArray($queryStr);
|
||||||
if (is_bool($resArr) && !$resArr)
|
if (is_bool($resArr) && !$resArr)
|
||||||
return false;
|
return false;
|
||||||
|
@ -3316,14 +3318,16 @@ class SeedDMS_Core_DMS {
|
||||||
* @return bool|SeedDMS_Core_AttributeDefinition or false
|
* @return bool|SeedDMS_Core_AttributeDefinition or false
|
||||||
*/
|
*/
|
||||||
function getAttributeDefinition($id) { /* {{{ */
|
function getAttributeDefinition($id) { /* {{{ */
|
||||||
if (!is_numeric($id))
|
if (!is_numeric($id) || $id < 1)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
$queryStr = "SELECT * FROM `tblAttributeDefinitions` WHERE `id` = " . (int) $id;
|
$queryStr = "SELECT * FROM `tblAttributeDefinitions` WHERE `id` = " . (int) $id;
|
||||||
$resArr = $this->db->getResultArray($queryStr);
|
$resArr = $this->db->getResultArray($queryStr);
|
||||||
|
|
||||||
if (is_bool($resArr) && $resArr == false) return false;
|
if (is_bool($resArr) && $resArr == false)
|
||||||
if (count($resArr) != 1) return false;
|
return false;
|
||||||
|
if (count($resArr) != 1)
|
||||||
|
return null;
|
||||||
|
|
||||||
$resArr = $resArr[0];
|
$resArr = $resArr[0];
|
||||||
|
|
||||||
|
@ -3347,8 +3351,10 @@ class SeedDMS_Core_DMS {
|
||||||
$queryStr = "SELECT * FROM `tblAttributeDefinitions` WHERE `name` = " . $this->db->qstr($name);
|
$queryStr = "SELECT * FROM `tblAttributeDefinitions` WHERE `name` = " . $this->db->qstr($name);
|
||||||
$resArr = $this->db->getResultArray($queryStr);
|
$resArr = $this->db->getResultArray($queryStr);
|
||||||
|
|
||||||
if (is_bool($resArr) && $resArr == false) return false;
|
if (is_bool($resArr) && $resArr == false)
|
||||||
if (count($resArr) != 1) return false;
|
return false;
|
||||||
|
if (count($resArr) != 1)
|
||||||
|
return null;
|
||||||
|
|
||||||
$resArr = $resArr[0];
|
$resArr = $resArr[0];
|
||||||
|
|
||||||
|
@ -3469,7 +3475,7 @@ class SeedDMS_Core_DMS {
|
||||||
* @return SeedDMS_Core_Workflow|bool of instances of {@link SeedDMS_Core_Workflow}, null if no workflow was found or false
|
* @return SeedDMS_Core_Workflow|bool of instances of {@link SeedDMS_Core_Workflow}, null if no workflow was found or false
|
||||||
*/
|
*/
|
||||||
function getWorkflow($id) { /* {{{ */
|
function getWorkflow($id) { /* {{{ */
|
||||||
if (!is_numeric($id))
|
if (!is_numeric($id) || $id < 1)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
$queryStr = "SELECT * FROM `tblWorkflows` WHERE `id`=".intval($id);
|
$queryStr = "SELECT * FROM `tblWorkflows` WHERE `id`=".intval($id);
|
||||||
|
@ -3548,7 +3554,7 @@ class SeedDMS_Core_DMS {
|
||||||
* @return bool|SeedDMS_Core_Workflow_State or false
|
* @return bool|SeedDMS_Core_Workflow_State or false
|
||||||
*/
|
*/
|
||||||
function getWorkflowState($id) { /* {{{ */
|
function getWorkflowState($id) { /* {{{ */
|
||||||
if (!is_numeric($id))
|
if (!is_numeric($id) || $id < 1)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
$queryStr = "SELECT * FROM `tblWorkflowStates` WHERE `id` = " . (int) $id;
|
$queryStr = "SELECT * FROM `tblWorkflowStates` WHERE `id` = " . (int) $id;
|
||||||
|
@ -3648,7 +3654,7 @@ class SeedDMS_Core_DMS {
|
||||||
* @return SeedDMS_Core_Workflow_Action|bool instance of {@link SeedDMS_Core_Workflow_Action} or false
|
* @return SeedDMS_Core_Workflow_Action|bool instance of {@link SeedDMS_Core_Workflow_Action} or false
|
||||||
*/
|
*/
|
||||||
function getWorkflowAction($id) { /* {{{ */
|
function getWorkflowAction($id) { /* {{{ */
|
||||||
if (!is_numeric($id))
|
if (!is_numeric($id) || $id < 1)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
$queryStr = "SELECT * FROM `tblWorkflowActions` WHERE `id` = " . (int) $id;
|
$queryStr = "SELECT * FROM `tblWorkflowActions` WHERE `id` = " . (int) $id;
|
||||||
|
@ -3942,7 +3948,7 @@ class SeedDMS_Core_DMS {
|
||||||
* @return array|bool
|
* @return array|bool
|
||||||
*/
|
*/
|
||||||
function getDuplicateDocumentContent() { /* {{{ */
|
function getDuplicateDocumentContent() { /* {{{ */
|
||||||
$queryStr = "SELECT a.*, b.`id` as dupid FROM `tblDocumentContent` a LEFT JOIN `tblDocumentContent` b ON a.`checksum`=b.`checksum` where a.`id`!=b.`id` ORDER by a.`id` LIMIT 1000";
|
$queryStr = "SELECT a.*, b.`id` as dupid FROM `tblDocumentContent` a LEFT JOIN `tblDocumentContent` b ON a.`checksum`=b.`checksum` WHERE a.`id`!=b.`id` ORDER by a.`id` LIMIT 1000";
|
||||||
$resArr = $this->db->getResultArray($queryStr);
|
$resArr = $this->db->getResultArray($queryStr);
|
||||||
if ($resArr === false)
|
if ($resArr === false)
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -247,6 +247,27 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
|
||||||
$this->_notifyList = array();
|
$this->_notifyList = array();
|
||||||
$this->_latestContent = null;
|
$this->_latestContent = null;
|
||||||
$this->_content = null;
|
$this->_content = null;
|
||||||
|
/* Cache */
|
||||||
|
$this->clearCache();
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear cache of this instance.
|
||||||
|
*
|
||||||
|
* The result of some expensive database actions (e.g. get all subfolders
|
||||||
|
* or documents) will be saved in a class variable to speed up consecutive
|
||||||
|
* calls of the same method. If a second call of the same method shall not
|
||||||
|
* use the cache, then it must be cleared.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function clearCache() { /* {{{ */
|
||||||
|
$this->_parent = null;
|
||||||
|
$this->_owner = null;
|
||||||
|
$this->_documentLinks = null;
|
||||||
|
$this->_documentFiles = null;
|
||||||
|
$this->_content = null;
|
||||||
|
$this->_accessList = null;
|
||||||
|
$this->_notifyList = null;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -330,30 +351,9 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
|
||||||
return null;
|
return null;
|
||||||
$resArr = $resArr[0];
|
$resArr = $resArr[0];
|
||||||
|
|
||||||
// New Locking mechanism uses a separate table to track the lock.
|
|
||||||
/*
|
|
||||||
$queryStr = "SELECT * FROM `tblDocumentLocks` WHERE `document` = " . (int) $id;
|
|
||||||
$lockArr = $db->getResultArray($queryStr);
|
|
||||||
if ((is_bool($lockArr) && $lockArr==false) || (count($lockArr)==0)) {
|
|
||||||
// Could not find a lock on the selected document.
|
|
||||||
$resArr['lock'] = -1;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// A lock has been identified for this document.
|
|
||||||
$resArr['lock'] = $lockArr[0]["userID"];
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
$resArr['lock'] = !$resArr['lock'] ? -1 : $resArr['lock'];
|
$resArr['lock'] = !$resArr['lock'] ? -1 : $resArr['lock'];
|
||||||
// print_r($resArr);exit;
|
|
||||||
|
|
||||||
return self::getInstanceByData($resArr, $dms);
|
return self::getInstanceByData($resArr, $dms);
|
||||||
|
|
||||||
$classname = $dms->getClassname('document');
|
|
||||||
/** @var SeedDMS_Core_Document $document */
|
|
||||||
$document = new $classname($resArr["id"], $resArr["name"], $resArr["comment"], $resArr["date"], $resArr["expires"], $resArr["owner"], $resArr["folder"], $resArr["inheritAccess"], $resArr["defaultAccess"], $resArr['lock'], $resArr["keywords"], $resArr["sequence"]);
|
|
||||||
$document->setDMS($dms);
|
|
||||||
$document = $document->applyDecorators();
|
|
||||||
return $document;
|
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1331,6 +1331,9 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
|
||||||
function addAccess($mode, $userOrGroupID, $isUser) { /* {{{ */
|
function addAccess($mode, $userOrGroupID, $isUser) { /* {{{ */
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
|
if($mode < M_NONE || $mode > M_ALL)
|
||||||
|
return false;
|
||||||
|
|
||||||
$userOrGroup = ($isUser) ? "`userID`" : "`groupID`";
|
$userOrGroup = ($isUser) ? "`userID`" : "`groupID`";
|
||||||
|
|
||||||
$queryStr = "INSERT INTO `tblACLs` (`target`, `targetType`, ".$userOrGroup.", `mode`) VALUES
|
$queryStr = "INSERT INTO `tblACLs` (`target`, `targetType`, ".$userOrGroup.", `mode`) VALUES
|
||||||
|
@ -2112,8 +2115,9 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
|
||||||
* currently logged in user.
|
* currently logged in user.
|
||||||
*
|
*
|
||||||
* @param integer $version version number of content element
|
* @param integer $version version number of content element
|
||||||
* @return SeedDMS_Core_DocumentContent|boolean object of class {@link SeedDMS_Core_DocumentContent}
|
* @return SeedDMS_Core_DocumentContent|null|boolean object of class
|
||||||
* or false
|
* {@link SeedDMS_Core_DocumentContent}, null if not content was found,
|
||||||
|
* false in case of an error
|
||||||
*/
|
*/
|
||||||
function getContentByVersion($version) { /* {{{ */
|
function getContentByVersion($version) { /* {{{ */
|
||||||
if (!is_numeric($version)) return false;
|
if (!is_numeric($version)) return false;
|
||||||
|
@ -2123,7 +2127,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
|
||||||
if ($revision->getVersion() == $version)
|
if ($revision->getVersion() == $version)
|
||||||
return $revision;
|
return $revision;
|
||||||
}
|
}
|
||||||
return false;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
@ -2132,7 +2136,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
|
||||||
if (is_bool($resArr) && !$resArr)
|
if (is_bool($resArr) && !$resArr)
|
||||||
return false;
|
return false;
|
||||||
if (count($resArr) != 1)
|
if (count($resArr) != 1)
|
||||||
return false;
|
return null;
|
||||||
|
|
||||||
$resArr = $resArr[0];
|
$resArr = $resArr[0];
|
||||||
$classname = $this->_dms->getClassname('documentcontent');
|
$classname = $this->_dms->getClassname('documentcontent');
|
||||||
|
@ -2141,7 +2145,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
|
||||||
$user = $this->_dms->getLoggedInUser();
|
$user = $this->_dms->getLoggedInUser();
|
||||||
/* A user with write access on the document may always see the version */
|
/* A user with write access on the document may always see the version */
|
||||||
if($user && $content->getAccessMode($user) == M_NONE)
|
if($user && $content->getAccessMode($user) == M_NONE)
|
||||||
return false;
|
return null;
|
||||||
else
|
else
|
||||||
return $content;
|
return $content;
|
||||||
} else {
|
} else {
|
||||||
|
@ -2475,8 +2479,10 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
|
||||||
|
|
||||||
$queryStr = "SELECT * FROM `tblDocumentLinks` WHERE `document` = " . $this->_id ." AND `id` = " . (int) $linkID;
|
$queryStr = "SELECT * FROM `tblDocumentLinks` WHERE `document` = " . $this->_id ." AND `id` = " . (int) $linkID;
|
||||||
$resArr = $db->getResultArray($queryStr);
|
$resArr = $db->getResultArray($queryStr);
|
||||||
if ((is_bool($resArr) && !$resArr) || count($resArr)==0)
|
if (is_bool($resArr) && !$resArr)
|
||||||
return false;
|
return false;
|
||||||
|
if (count($resArr)==0)
|
||||||
|
return null;
|
||||||
|
|
||||||
$resArr = $resArr[0];
|
$resArr = $resArr[0];
|
||||||
$document = $this->_dms->getDocument($resArr["document"]);
|
$document = $this->_dms->getDocument($resArr["document"]);
|
||||||
|
@ -2494,12 +2500,22 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
|
||||||
* The list may contain all links to other documents, even those which
|
* The list may contain all links to other documents, even those which
|
||||||
* may not be visible by certain users, unless you pass appropriate
|
* may not be visible by certain users, unless you pass appropriate
|
||||||
* parameters to filter out public links and those created by
|
* parameters to filter out public links and those created by
|
||||||
* the given user. The application may call
|
* the given user. The two parameters are or'ed. If $publiconly
|
||||||
* SeedDMS_Core_DMS::filterDocumentLinks() afterwards.
|
* is set the method will return all public links disregarding the
|
||||||
|
* user. If $publiconly is not set but a user is set, the method
|
||||||
|
* will return all links of that user (public and none public).
|
||||||
|
* Setting a user and $publiconly to true will *not* return the
|
||||||
|
* public links of that user but all links which are public or
|
||||||
|
* owned by that user.
|
||||||
*
|
*
|
||||||
* @param boolean $publiconly return on publically visible links
|
* The application must call
|
||||||
* @param object $user return also private links of this user
|
* SeedDMS_Core_DMS::filterDocumentLinks() afterwards to filter out
|
||||||
* @return array list of objects of class SeedDMS_Core_DocumentLink
|
* those links pointing to a document not accessible by a given user.
|
||||||
|
*
|
||||||
|
* @param boolean $publiconly return all publically visible links
|
||||||
|
* @param SeedDMS_Core_User $user return also private links of this user
|
||||||
|
*
|
||||||
|
* @return array list of objects of class {@see SeedDMS_Core_DocumentLink}
|
||||||
*/
|
*/
|
||||||
function getDocumentLinks($publiconly=false, $user=null) { /* {{{ */
|
function getDocumentLinks($publiconly=false, $user=null) { /* {{{ */
|
||||||
if (!isset($this->_documentLinks)) {
|
if (!isset($this->_documentLinks)) {
|
||||||
|
@ -2540,39 +2556,41 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
|
||||||
* parameters to filter out public links and those created by
|
* parameters to filter out public links and those created by
|
||||||
* the given user.
|
* the given user.
|
||||||
* This functions is basically the reverse of
|
* This functions is basically the reverse of
|
||||||
* SeedDMS_Core_Document::getDocumentLinks()
|
* {@see SeedDMS_Core_Document::getDocumentLinks()}
|
||||||
*
|
*
|
||||||
* The application may call
|
* The application must call
|
||||||
* SeedDMS_Core_DMS::filterDocumentLinks() afterwards.
|
* SeedDMS_Core_DMS::filterDocumentLinks() afterwards to filter out
|
||||||
|
* those links pointing to a document not accessible by a given user.
|
||||||
|
*
|
||||||
|
* @param boolean $publiconly return all publically visible links
|
||||||
|
* @param SeedDMS_Core_User $user return also private links of this user
|
||||||
*
|
*
|
||||||
* @param boolean $publiconly return on publically visible links
|
|
||||||
* @param object $user return also private links of this user
|
|
||||||
* @return array list of objects of class SeedDMS_Core_DocumentLink
|
* @return array list of objects of class SeedDMS_Core_DocumentLink
|
||||||
*/
|
*/
|
||||||
function getReverseDocumentLinks($publiconly=false, $user=null) { /* {{{ */
|
function getReverseDocumentLinks($publiconly=false, $user=null) { /* {{{ */
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
$queryStr = "SELECT * FROM `tblDocumentLinks` WHERE `target` = " . $this->_id;
|
$queryStr = "SELECT * FROM `tblDocumentLinks` WHERE `target` = " . $this->_id;
|
||||||
$tmp = array();
|
$tmp = array();
|
||||||
if($publiconly)
|
if($publiconly)
|
||||||
$tmp[] = "`public`=1";
|
$tmp[] = "`public`=1";
|
||||||
if($user)
|
if($user)
|
||||||
$tmp[] = "`userID`=".$user->getID();
|
$tmp[] = "`userID`=".$user->getID();
|
||||||
if($tmp) {
|
if($tmp) {
|
||||||
$queryStr .= " AND (".implode(" OR ", $tmp).")";
|
$queryStr .= " AND (".implode(" OR ", $tmp).")";
|
||||||
}
|
}
|
||||||
|
|
||||||
$resArr = $db->getResultArray($queryStr);
|
$resArr = $db->getResultArray($queryStr);
|
||||||
if (is_bool($resArr) && !$resArr)
|
if (is_bool($resArr) && !$resArr)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
$links = array();
|
$links = array();
|
||||||
foreach ($resArr as $row) {
|
foreach ($resArr as $row) {
|
||||||
$document = $this->_dms->getDocument($row["document"]);
|
$document = $this->_dms->getDocument($row["document"]);
|
||||||
$link = new SeedDMS_Core_DocumentLink($row["id"], $document, $this, $row["userID"], $row["public"]);
|
$link = new SeedDMS_Core_DocumentLink($row["id"], $document, $this, $row["userID"], $row["public"]);
|
||||||
if($link->getAccessMode($user, $document, $this) >= M_READ)
|
if($link->getAccessMode($user, $document, $this) >= M_READ)
|
||||||
array_push($links, $link);
|
array_push($links, $link);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $links;
|
return $links;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
@ -2580,20 +2598,39 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
|
||||||
function addDocumentLink($targetID, $userID, $public) { /* {{{ */
|
function addDocumentLink($targetID, $userID, $public) { /* {{{ */
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
$public = ($public) ? "1" : "0";
|
$public = ($public) ? 1 : 0;
|
||||||
|
|
||||||
$queryStr = "INSERT INTO `tblDocumentLinks` (`document`, `target`, `userID`, `public`) VALUES (".$this->_id.", ".(int)$targetID.", ".(int)$userID.", ".(int)$public.")";
|
if (!is_numeric($targetID) || $targetID < 1)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if ($targetID == $this->_id)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (!is_numeric($userID) || $userID < 1)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if(!($target = $this->_dms->getDocument($targetID)))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if(!($user = $this->_dms->getUser($userID)))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
$queryStr = "INSERT INTO `tblDocumentLinks` (`document`, `target`, `userID`, `public`) VALUES (".$this->_id.", ".(int)$targetID.", ".(int)$userID.", ".$public.")";
|
||||||
if (!$db->getResult($queryStr))
|
if (!$db->getResult($queryStr))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
unset($this->_documentLinks);
|
unset($this->_documentLinks);
|
||||||
return true;
|
|
||||||
|
$id = $db->getInsertID('tblDocumentLinks');
|
||||||
|
$link = new SeedDMS_Core_DocumentLink($id, $this, $target, $user->getId(), $public);
|
||||||
|
return $link;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
function removeDocumentLink($linkID) { /* {{{ */
|
function removeDocumentLink($linkID) { /* {{{ */
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
if (!is_numeric($linkID)) return false;
|
if (!is_numeric($linkID) || $linkID < 1)
|
||||||
|
return false;
|
||||||
|
|
||||||
$queryStr = "DELETE FROM `tblDocumentLinks` WHERE `document` = " . $this->_id ." AND `id` = " . (int) $linkID;
|
$queryStr = "DELETE FROM `tblDocumentLinks` WHERE `document` = " . $this->_id ." AND `id` = " . (int) $linkID;
|
||||||
if (!$db->getResult($queryStr)) return false;
|
if (!$db->getResult($queryStr)) return false;
|
||||||
|
@ -2627,8 +2664,9 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
|
||||||
/**
|
/**
|
||||||
* Get list of files attached to document
|
* Get list of files attached to document
|
||||||
*
|
*
|
||||||
* @param integer $version get only attachments for this version
|
* @param integer $version get only attachments for this version
|
||||||
*@param boolean $incnoversion include attachments without a version
|
* @param boolean $incnoversion include attachments without a version
|
||||||
|
*
|
||||||
* @return array list of files, false in case of an sql error
|
* @return array list of files, false in case of an sql error
|
||||||
*/
|
*/
|
||||||
function getDocumentFiles($version=0, $incnoversion=true) { /* {{{ */
|
function getDocumentFiles($version=0, $incnoversion=true) { /* {{{ */
|
||||||
|
@ -2666,7 +2704,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
|
||||||
return $this->_documentFiles[$hash];
|
return $this->_documentFiles[$hash];
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
function addDocumentFile($name, $comment, $user, $tmpFile, $orgFileName,$fileType, $mimeType,$version=0,$public=1) { /* {{{ */
|
function addDocumentFile($name, $comment, $user, $tmpFile, $orgFileName, $fileType, $mimeType, $version=0, $public=1) { /* {{{ */
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
$dir = $this->getDir();
|
$dir = $this->getDir();
|
||||||
|
@ -2699,29 +2737,37 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
|
||||||
}
|
}
|
||||||
|
|
||||||
$db->commitTransaction();
|
$db->commitTransaction();
|
||||||
|
unset ($this->_documentFiles);
|
||||||
return $file;
|
return $file;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
function removeDocumentFile($ID) { /* {{{ */
|
function removeDocumentFile($ID) { /* {{{ */
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
if (!is_numeric($ID)) return false;
|
if (!is_numeric($ID) || $ID < 1)
|
||||||
|
return false;
|
||||||
|
|
||||||
$file = $this->getDocumentFile($ID);
|
$file = $this->getDocumentFile($ID);
|
||||||
if (is_bool($file) && !$file) return false;
|
if (is_bool($file) && !$file) return false;
|
||||||
|
|
||||||
if (file_exists( $this->_dms->contentDir . $file->getPath() )){
|
$db->startTransaction();
|
||||||
if (!SeedDMS_Core_File::removeFile( $this->_dms->contentDir . $file->getPath() ))
|
/* First delete the database record, because that can be undone
|
||||||
return false;
|
* if deletion of the file fails.
|
||||||
|
*/
|
||||||
|
$queryStr = "DELETE FROM `tblDocumentFiles` WHERE `document` = " . $this->getID() . " AND `id` = " . (int) $ID;
|
||||||
|
if (!$db->getResult($queryStr)) {
|
||||||
|
$db->rollbackTransaction();
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$name=$file->getName();
|
if (file_exists( $this->_dms->contentDir . $file->getPath() )){
|
||||||
$comment=$file->getcomment();
|
if (!SeedDMS_Core_File::removeFile( $this->_dms->contentDir . $file->getPath() )) {
|
||||||
|
$db->rollbackTransaction();
|
||||||
$queryStr = "DELETE FROM `tblDocumentFiles` WHERE `document` = " . $this->getID() . " AND `id` = " . (int) $ID;
|
return false;
|
||||||
if (!$db->getResult($queryStr))
|
}
|
||||||
return false;
|
}
|
||||||
|
|
||||||
|
$db->commitTransaction();
|
||||||
unset ($this->_documentFiles);
|
unset ($this->_documentFiles);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -2840,7 +2886,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
|
||||||
/* Check if 'onPostRemoveDocument' callback is set */
|
/* Check if 'onPostRemoveDocument' callback is set */
|
||||||
if(isset($this->_dms->callbacks['onPostRemoveDocument'])) {
|
if(isset($this->_dms->callbacks['onPostRemoveDocument'])) {
|
||||||
foreach($this->_dms->callbacks['onPostRemoveDocument'] as $callback) {
|
foreach($this->_dms->callbacks['onPostRemoveDocument'] as $callback) {
|
||||||
if(!call_user_func($callback[0], $callback[1], $this->_id)) {
|
if(!call_user_func($callback[0], $callback[1], $this)) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,7 +53,11 @@ class SeedDMS_Core_DocumentCategory {
|
||||||
|
|
||||||
function getName() { return $this->_name; }
|
function getName() { return $this->_name; }
|
||||||
|
|
||||||
function setName($newName) { /* {{{ */
|
function setName($newName) { /* {{{ */
|
||||||
|
$newName = trim($newName);
|
||||||
|
if(!$name)
|
||||||
|
return false;
|
||||||
|
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
$queryStr = "UPDATE `tblCategory` SET `name` = ".$db->qstr($newName)." WHERE `id` = ". $this->_id;
|
$queryStr = "UPDATE `tblCategory` SET `name` = ".$db->qstr($newName)." WHERE `id` = ". $this->_id;
|
||||||
|
|
|
@ -146,6 +146,7 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object {
|
||||||
$this->_subFolders = null;
|
$this->_subFolders = null;
|
||||||
$this->_documents = null;
|
$this->_documents = null;
|
||||||
$this->_accessList = null;
|
$this->_accessList = null;
|
||||||
|
$this->_notifyList = null;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -389,6 +390,8 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object {
|
||||||
* to say it differently the passed folder is somewhere below the
|
* to say it differently the passed folder is somewhere below the
|
||||||
* current folder.
|
* current folder.
|
||||||
*
|
*
|
||||||
|
* This is basically the opposite of {@see SeedDMS_Core_Folder::isDescendant()}
|
||||||
|
*
|
||||||
* @param SeedDMS_Core_Folder $subfolder folder to be checked if it is
|
* @param SeedDMS_Core_Folder $subfolder folder to be checked if it is
|
||||||
* a subfolder on any level of the current folder
|
* a subfolder on any level of the current folder
|
||||||
* @return bool true if passed folder is a subfolder, otherwise false
|
* @return bool true if passed folder is a subfolder, otherwise false
|
||||||
|
@ -794,15 +797,22 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check, if this folder is a subfolder of a given folder
|
* Check, if this folder is a subfolder of a given folder
|
||||||
*
|
*
|
||||||
|
* This is basically the opposite of {@see SeedDMS_Core_Folder::isSubFolder()}
|
||||||
|
*
|
||||||
* @param object $folder parent folder
|
* @param object $folder parent folder
|
||||||
* @return boolean true if folder is a subfolder
|
* @return boolean true if folder is a subfolder
|
||||||
*/
|
*/
|
||||||
function isDescendant($folder) { /* {{{ */
|
function isDescendant($folder) { /* {{{ */
|
||||||
|
/* If the current folder has no parent it cannot be a descendant */
|
||||||
if(!$this->getParent())
|
if(!$this->getParent())
|
||||||
return false;
|
return false;
|
||||||
|
/* Check if the passed folder is the parent of the current folder.
|
||||||
|
* In that case the current folder is a subfolder of the passed folder.
|
||||||
|
*/
|
||||||
if($this->getParent()->getID() == $folder->getID())
|
if($this->getParent()->getID() == $folder->getID())
|
||||||
return true;
|
return true;
|
||||||
|
/* Recursively go up to the root folder */
|
||||||
return $this->getParent()->isDescendant($folder);
|
return $this->getParent()->isDescendant($folder);
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
|
@ -814,11 +824,13 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object {
|
||||||
* @return int number of documents or false in case of an error
|
* @return int number of documents or false in case of an error
|
||||||
*/
|
*/
|
||||||
function hasDocuments() { /* {{{ */
|
function hasDocuments() { /* {{{ */
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
/* Do not use the cache because it may not contain all documents if
|
||||||
|
* the former call getDocuments() limited the number of documents
|
||||||
if (isset($this->_documents)) {
|
if (isset($this->_documents)) {
|
||||||
/** @noinspection PhpUndefinedFieldInspection */
|
|
||||||
return count($this->_documents);
|
return count($this->_documents);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
$queryStr = "SELECT count(*) as c FROM `tblDocuments` WHERE `folder` = " . $this->_id;
|
$queryStr = "SELECT count(*) as c FROM `tblDocuments` WHERE `folder` = " . $this->_id;
|
||||||
$resArr = $db->getResultArray($queryStr);
|
$resArr = $db->getResultArray($queryStr);
|
||||||
if (is_bool($resArr) && !$resArr)
|
if (is_bool($resArr) && !$resArr)
|
||||||
|
@ -1307,14 +1319,14 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object {
|
||||||
$pacl = array("groups" => array(), "users" => array());
|
$pacl = array("groups" => array(), "users" => array());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($this->_accessList[$mode])) {
|
if (!isset($this->_accessList[$mode])) {
|
||||||
if ($op!=O_GTEQ && $op!=O_LTEQ && $op!=O_EQ) {
|
if ($op!=O_GTEQ && $op!=O_LTEQ && $op!=O_EQ) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$modeStr = "";
|
$modeStr = "";
|
||||||
if ($mode!=M_ANY) {
|
if ($mode!=M_ANY) {
|
||||||
$modeStr = " AND mode".$op.(int)$mode;
|
$modeStr = " AND mode".$op.(int)$mode;
|
||||||
}
|
}
|
||||||
$queryStr = "SELECT * FROM `tblACLs` WHERE `targetType` = ".T_FOLDER.
|
$queryStr = "SELECT * FROM `tblACLs` WHERE `targetType` = ".T_FOLDER.
|
||||||
" AND `target` = " . $this->_id . $modeStr . " ORDER BY `targetType`";
|
" AND `target` = " . $this->_id . $modeStr . " ORDER BY `targetType`";
|
||||||
$resArr = $db->getResultArray($queryStr);
|
$resArr = $db->getResultArray($queryStr);
|
||||||
|
@ -1328,7 +1340,7 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object {
|
||||||
else //if ($row["groupID"] != -1)
|
else //if ($row["groupID"] != -1)
|
||||||
array_push($this->_accessList[$mode]["groups"], new SeedDMS_Core_GroupAccess($this->_dms->getGroup($row["groupID"]), (int) $row["mode"]));
|
array_push($this->_accessList[$mode]["groups"], new SeedDMS_Core_GroupAccess($this->_dms->getGroup($row["groupID"]), (int) $row["mode"]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->_accessList[$mode];
|
return $this->_accessList[$mode];
|
||||||
return SeedDMS_Core_DMS::mergeAccessLists($pacl, $this->_accessList[$mode]);
|
return SeedDMS_Core_DMS::mergeAccessLists($pacl, $this->_accessList[$mode]);
|
||||||
|
@ -1369,6 +1381,9 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object {
|
||||||
function addAccess($mode, $userOrGroupID, $isUser) { /* {{{ */
|
function addAccess($mode, $userOrGroupID, $isUser) { /* {{{ */
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
|
if($mode < M_NONE || $mode > M_ALL)
|
||||||
|
return false;
|
||||||
|
|
||||||
$userOrGroup = ($isUser) ? "`userID`" : "`groupID`";
|
$userOrGroup = ($isUser) ? "`userID`" : "`groupID`";
|
||||||
|
|
||||||
$queryStr = "INSERT INTO `tblACLs` (`target`, `targetType`, ".$userOrGroup.", `mode`) VALUES
|
$queryStr = "INSERT INTO `tblACLs` (`target`, `targetType`, ".$userOrGroup.", `mode`) VALUES
|
||||||
|
@ -1443,32 +1458,32 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the access mode of a user on the folder
|
* Get the access mode of a user on the folder
|
||||||
*
|
*
|
||||||
|
* The access mode is either M_READ, M_READWRITE, M_ALL, or M_NONE.
|
||||||
|
* It is determined
|
||||||
|
* - by the user (admins and owners have always access mode M_ALL)
|
||||||
|
* - by the access list for the user (possibly inherited)
|
||||||
|
* - by the default access mode
|
||||||
|
*
|
||||||
* This function returns the access mode for a given user. An administrator
|
* This function returns the access mode for a given user. An administrator
|
||||||
* and the owner of the folder has unrestricted access. A guest user has
|
* and the owner of the folder has unrestricted access. A guest user has
|
||||||
* read only access or no access if access rights are further limited
|
* read only access or no access if access rights are further limited
|
||||||
* by access control lists. All other users have access rights according
|
* by access control lists all the default access.
|
||||||
|
* All other users have access rights according
|
||||||
* to the access control lists or the default access. This function will
|
* to the access control lists or the default access. This function will
|
||||||
* recursive check for access rights of parent folders if access rights
|
* recursively check for access rights of parent folders if access rights
|
||||||
* are inherited.
|
* are inherited.
|
||||||
*
|
*
|
||||||
* This function returns the access mode for a given user. An administrator
|
* Before checking the access itself a callback 'onCheckAccessFolder'
|
||||||
* and the owner of the folder has unrestricted access. A guest user has
|
|
||||||
* read only access or no access if access rights are further limited
|
|
||||||
* by access control lists. All other users have access rights according
|
|
||||||
* to the access control lists or the default access. This function will
|
|
||||||
* recursive check for access rights of parent folders if access rights
|
|
||||||
* are inherited.
|
|
||||||
*
|
|
||||||
* Before checking the access in the method itself a callback 'onCheckAccessFolder'
|
|
||||||
* is called. If it returns a value > 0, then this will be returned by this
|
* is called. If it returns a value > 0, then this will be returned by this
|
||||||
* method without any further checks. The optional paramater $context
|
* method without any further checks. The optional paramater $context
|
||||||
* will be passed as a third parameter to the callback. It contains
|
* will be passed as a third parameter to the callback. It contains
|
||||||
* the operation for which the access mode is retrieved. It is for example
|
* the operation for which the access mode is retrieved. It is for example
|
||||||
* set to 'removeDocument' if the access mode is used to check for sufficient
|
* set to 'removeDocument' if the access mode is used to check for sufficient
|
||||||
* permission on deleting a document.
|
* permission on deleting a document. This callback could be used to
|
||||||
|
* override any existing access mode in a certain context.
|
||||||
*
|
*
|
||||||
* @param object $user user for which access shall be checked
|
* @param SeedDMS_Core_User $user user for which access shall be checked
|
||||||
* @param string $context context in which the access mode is requested
|
* @param string $context context in which the access mode is requested
|
||||||
* @return integer access mode
|
* @return integer access mode
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -162,6 +162,10 @@ class SeedDMS_Core_Group { /* {{{ */
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
function setName($newName) { /* {{{ */
|
function setName($newName) { /* {{{ */
|
||||||
|
$newName = trim($newName);
|
||||||
|
if(!$newName)
|
||||||
|
return false;
|
||||||
|
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
$queryStr = "UPDATE `tblGroups` SET `name` = ".$db->qstr($newName)." WHERE `id` = " . $this->_id;
|
$queryStr = "UPDATE `tblGroups` SET `name` = ".$db->qstr($newName)." WHERE `id` = " . $this->_id;
|
||||||
|
|
|
@ -91,6 +91,10 @@ class SeedDMS_Core_KeywordCategory {
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
function setName($newName) {
|
function setName($newName) {
|
||||||
|
$newName = trim($newName);
|
||||||
|
if(!$newName)
|
||||||
|
return false;
|
||||||
|
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
$queryStr = "UPDATE `tblKeywordCategories` SET `name` = ".$db->qstr($newName)." WHERE `id` = ". $this->_id;
|
$queryStr = "UPDATE `tblKeywordCategories` SET `name` = ".$db->qstr($newName)." WHERE `id` = ". $this->_id;
|
||||||
|
@ -105,10 +109,13 @@ class SeedDMS_Core_KeywordCategory {
|
||||||
* @param SeedDMS_Core_User $user
|
* @param SeedDMS_Core_User $user
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
function setOwner($user) {
|
function setOwner($user) {
|
||||||
|
if(!$user || !$user->isType('user'))
|
||||||
|
return false;
|
||||||
|
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
$queryStr = "UPDATE `tblKeywordCategories` SET `owner` = " . $user->getID() . " WHERE = `id` = " . $this->_id;
|
$queryStr = "UPDATE `tblKeywordCategories` SET `owner` = " . $user->getID() . " WHERE `id` = " . $this->_id;
|
||||||
if (!$db->getResult($queryStr))
|
if (!$db->getResult($queryStr))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
|
@ -655,7 +655,7 @@ class SeedDMS_Core_User { /* {{{ */
|
||||||
function setEmail($newEmail) { /* {{{ */
|
function setEmail($newEmail) { /* {{{ */
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
$queryStr = "UPDATE `tblUsers` SET `email` =".$db->qstr($newEmail)." WHERE `id` = " . $this->_id;
|
$queryStr = "UPDATE `tblUsers` SET `email` =".$db->qstr(trim($newEmail))." WHERE `id` = " . $this->_id;
|
||||||
$res = $db->getResult($queryStr);
|
$res = $db->getResult($queryStr);
|
||||||
if (!$res)
|
if (!$res)
|
||||||
return false;
|
return false;
|
||||||
|
@ -676,7 +676,7 @@ class SeedDMS_Core_User { /* {{{ */
|
||||||
function setLanguage($newLanguage) { /* {{{ */
|
function setLanguage($newLanguage) { /* {{{ */
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
$queryStr = "UPDATE `tblUsers` SET `language` =".$db->qstr($newLanguage)." WHERE `id` = " . $this->_id;
|
$queryStr = "UPDATE `tblUsers` SET `language` =".$db->qstr(trim($newLanguage))." WHERE `id` = " . $this->_id;
|
||||||
$res = $db->getResult($queryStr);
|
$res = $db->getResult($queryStr);
|
||||||
if (!$res)
|
if (!$res)
|
||||||
return false;
|
return false;
|
||||||
|
@ -697,7 +697,7 @@ class SeedDMS_Core_User { /* {{{ */
|
||||||
function setTheme($newTheme) { /* {{{ */
|
function setTheme($newTheme) { /* {{{ */
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
$queryStr = "UPDATE `tblUsers` SET `theme` =".$db->qstr($newTheme)." WHERE `id` = " . $this->_id;
|
$queryStr = "UPDATE `tblUsers` SET `theme` =".$db->qstr(trim($newTheme))." WHERE `id` = " . $this->_id;
|
||||||
$res = $db->getResult($queryStr);
|
$res = $db->getResult($queryStr);
|
||||||
if (!$res)
|
if (!$res)
|
||||||
return false;
|
return false;
|
||||||
|
@ -718,7 +718,7 @@ class SeedDMS_Core_User { /* {{{ */
|
||||||
function setComment($newComment) { /* {{{ */
|
function setComment($newComment) { /* {{{ */
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
$queryStr = "UPDATE `tblUsers` SET `comment` =".$db->qstr($newComment)." WHERE `id` = " . $this->_id;
|
$queryStr = "UPDATE `tblUsers` SET `comment` =".$db->qstr(trim($newComment))." WHERE `id` = " . $this->_id;
|
||||||
$res = $db->getResult($queryStr);
|
$res = $db->getResult($queryStr);
|
||||||
if (!$res)
|
if (!$res)
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -257,6 +257,15 @@ class SeedDMS_Core_DatabaseAccess {
|
||||||
return $this->_driver;
|
return $this->_driver;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Turn on views instead of temp. tables
|
||||||
|
*
|
||||||
|
* @param bool $onoff turn use of views instead of temp. table on/off
|
||||||
|
*/
|
||||||
|
function useViews($onoff) { /* {{{ */
|
||||||
|
$this->_useviews = $onoff;
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Destructor of SeedDMS_Core_DatabaseAccess
|
* Destructor of SeedDMS_Core_DatabaseAccess
|
||||||
*/
|
*/
|
||||||
|
@ -1105,7 +1114,9 @@ class SeedDMS_Core_DatabaseAccess {
|
||||||
*/
|
*/
|
||||||
function createDump($fp) { /* {{{ */
|
function createDump($fp) { /* {{{ */
|
||||||
$tables = $this->TableList('TABLES');
|
$tables = $this->TableList('TABLES');
|
||||||
foreach($tables as $table) {
|
foreach($tables as $table) {
|
||||||
|
if($table == 'sqlite_sequence')
|
||||||
|
continue;
|
||||||
$query = "SELECT * FROM `".$table."`";
|
$query = "SELECT * FROM `".$table."`";
|
||||||
$records = $this->getResultArray($query);
|
$records = $this->getResultArray($query);
|
||||||
fwrite($fp,"\n-- TABLE: ".$table."--\n\n");
|
fwrite($fp,"\n-- TABLE: ".$table."--\n\n");
|
||||||
|
|
|
@ -44,9 +44,6 @@
|
||||||
<file name="inc.ClassGroup.php" role="php">
|
<file name="inc.ClassGroup.php" role="php">
|
||||||
<tasks:replace from="@package_version@" to="version" type="package-info" />
|
<tasks:replace from="@package_version@" to="version" type="package-info" />
|
||||||
</file>
|
</file>
|
||||||
<file name="inc.DBAccess.php" role="php">
|
|
||||||
<tasks:replace from="@package_version@" to="version" type="package-info" />
|
|
||||||
</file>
|
|
||||||
<file name="inc.DBAccessPDO.php" role="php">
|
<file name="inc.DBAccessPDO.php" role="php">
|
||||||
<tasks:replace from="@package_version@" to="version" type="package-info" />
|
<tasks:replace from="@package_version@" to="version" type="package-info" />
|
||||||
</file>
|
</file>
|
||||||
|
@ -88,8 +85,17 @@
|
||||||
</file>
|
</file>
|
||||||
</dir> <!-- /DTD -->
|
</dir> <!-- /DTD -->
|
||||||
<dir name="tests">
|
<dir name="tests">
|
||||||
<file name="getfoldertree.php" role="test" />
|
<file name="AttributeDefinitionTest.php" role="test" />
|
||||||
<file name="getusers.php" role="test" />
|
<file name="AttributeTest.php" role="test" />
|
||||||
|
<file name="DatabaseTest.php" role="test" />
|
||||||
|
<file name="DmsTest.php" role="test" />
|
||||||
|
<file name="DmsWithDataTest.php" role="test" />
|
||||||
|
<file name="DocumentTest.php" role="test" />
|
||||||
|
<file name="FolderTest.php" role="test" />
|
||||||
|
<file name="UserTest.php" role="test" />
|
||||||
|
<file name="GroupTest.php" role="test" />
|
||||||
|
<file name="KeywordCategoryTest.php" role="test" />
|
||||||
|
<file name="SeedDmsBase.php" role="test" />
|
||||||
</dir> <!-- /tests -->
|
</dir> <!-- /tests -->
|
||||||
<file name="Core.php" role="php">
|
<file name="Core.php" role="php">
|
||||||
<tasks:replace from="@package_version@" to="version" type="package-info" />
|
<tasks:replace from="@package_version@" to="version" type="package-info" />
|
||||||
|
@ -1939,6 +1945,10 @@ add method SeedDMS_Core_DatabaseAccess::setLogFp()
|
||||||
- SeedDMS_Core_DMS::search() will not find document without an expiration date anymore, if the search is limited by an expiration end date but no start date
|
- SeedDMS_Core_DMS::search() will not find document without an expiration date anymore, if the search is limited by an expiration end date but no start date
|
||||||
- add method SeedDMS_Core_Folder::getFoldersMinMax()
|
- add method SeedDMS_Core_Folder::getFoldersMinMax()
|
||||||
- init internal cache variables of SeedDMS_Core_Folder and add method clearCache()
|
- init internal cache variables of SeedDMS_Core_Folder and add method clearCache()
|
||||||
|
- SeedDMS_Core_Folder::hasDocuments() does not use the interal document cache anymore
|
||||||
|
- SeedDMS_Core_Document::addDocumentLink() returns an object of type SeedDMS_Core_DocumentLink in case of success
|
||||||
|
- trim email, comment, language, theme when setting data of user
|
||||||
|
- more checks whether an id > 0 when getting a database record
|
||||||
</notes>
|
</notes>
|
||||||
</release>
|
</release>
|
||||||
<release>
|
<release>
|
||||||
|
|
|
@ -96,7 +96,7 @@
|
||||||
-->
|
-->
|
||||||
<server
|
<server
|
||||||
rootDir = ""
|
rootDir = ""
|
||||||
httpRoot = "/seeddms/"
|
httpRoot = "/seeddms51x/"
|
||||||
contentDir = ""
|
contentDir = ""
|
||||||
stagingDir = ""
|
stagingDir = ""
|
||||||
luceneDir = ""
|
luceneDir = ""
|
||||||
|
@ -315,5 +315,9 @@
|
||||||
<converter mimeType="text/plain">a2ps -1 -a1 -R -B -o - '%f' | gs -dBATCH -dNOPAUSE -sDEVICE=pngalpha -dFirstPage=1 -dLastPage=1 -dPDFFitPage -r72x72 -sOutputFile=- -q - | convert -resize %wx png:- '%o'</converter>
|
<converter mimeType="text/plain">a2ps -1 -a1 -R -B -o - '%f' | gs -dBATCH -dNOPAUSE -sDEVICE=pngalpha -dFirstPage=1 -dLastPage=1 -dPDFFitPage -r72x72 -sOutputFile=- -q - | convert -resize %wx png:- '%o'</converter>
|
||||||
</converters>
|
</converters>
|
||||||
</advanced>
|
</advanced>
|
||||||
<extensions/>
|
<extensions>
|
||||||
|
<extension name="example" disable="true">
|
||||||
|
<parameter name="__disable__">1</parameter>
|
||||||
|
</extension>
|
||||||
|
</extensions>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
$EXT_CONF['example'] = array(
|
$EXT_CONF['example'] = array(
|
||||||
'title' => 'Example Extension',
|
'title' => 'Example Extension',
|
||||||
'description' => 'This sample extension demonstrates the use of various hooks',
|
'description' => 'This sample extension demonstrates the use of various hooks',
|
||||||
'disable' => false,
|
'disable' => true,
|
||||||
'version' => '1.0.1',
|
'version' => '1.0.1',
|
||||||
'releasedate' => '2018-03-21',
|
'releasedate' => '2018-03-21',
|
||||||
'author' => array('name'=>'Uwe Steinmann', 'email'=>'uwe@steinmann.cx', 'company'=>'MMK GmbH'),
|
'author' => array('name'=>'Uwe Steinmann', 'email'=>'uwe@steinmann.cx', 'company'=>'MMK GmbH'),
|
||||||
|
|
|
@ -35,6 +35,31 @@ if(!trim($settings->_encryptionKey)) {
|
||||||
$settings->save();
|
$settings->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Set some directories if not set in the configuration file */
|
||||||
|
$__basedir = dirname(dirname(__DIR__));
|
||||||
|
$__datadir = dirname(dirname(__DIR__))."/data";;
|
||||||
|
if(empty($settings->_rootDir)) {
|
||||||
|
$settings->_rootDir = $__basedir."/www/";
|
||||||
|
}
|
||||||
|
if(empty($settings->_contentDir)) {
|
||||||
|
$settings->_contentDir = $__basedir;
|
||||||
|
}
|
||||||
|
if(empty($settings->_cacheDir)) {
|
||||||
|
$settings->_cacheDir = $__datadir."/cache/";
|
||||||
|
}
|
||||||
|
if(empty($settings->_backupDir)) {
|
||||||
|
$settings->_backupDir = $__datadir."/backup/";
|
||||||
|
}
|
||||||
|
if(empty($settings->_luceneDir)) {
|
||||||
|
$settings->_luceneDir = $__datadir."/lucene/";
|
||||||
|
}
|
||||||
|
if(empty($settings->_stagingDir)) {
|
||||||
|
$settings->_stagingDir = $__datadir."/lucene/";
|
||||||
|
}
|
||||||
|
if($settings->_dbDriver == 'sqlite' && empty($settings->_dbDatabase)) {
|
||||||
|
$settings->_dbDatabase = $__datadir."/content.db";
|
||||||
|
}
|
||||||
|
|
||||||
ini_set('include_path', $settings->_rootDir.'pear'. PATH_SEPARATOR .ini_get('include_path'));
|
ini_set('include_path', $settings->_rootDir.'pear'. PATH_SEPARATOR .ini_get('include_path'));
|
||||||
if(!empty($settings->_extraPath)) {
|
if(!empty($settings->_extraPath)) {
|
||||||
ini_set('include_path', $settings->_extraPath. PATH_SEPARATOR .ini_get('include_path'));
|
ini_set('include_path', $settings->_extraPath. PATH_SEPARATOR .ini_get('include_path'));
|
||||||
|
|
|
@ -2328,8 +2328,8 @@ class TestController { /* {{{ */
|
||||||
$this->container = $container;
|
$this->container = $container;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function echoData($request, $response) { /* {{{ */
|
public function echoData($request, $response, $args) { /* {{{ */
|
||||||
return $response->withJson(array('success'=>true, 'message'=>'This is the result of the echo call.', 'data'=>''), 200);
|
return $response->withJson(array('success'=>true, 'message'=>'This is the result of the echo call.', 'data'=>$args['data']), 200);
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
|
@ -2504,7 +2504,7 @@ $app->post('/categories', \RestapiController::class.':createCategory');
|
||||||
$app->put('/categories/{id}/name', \RestapiController::class.':changeCategoryName');
|
$app->put('/categories/{id}/name', \RestapiController::class.':changeCategoryName');
|
||||||
$app->get('/attributedefinitions', \RestapiController::class.':getAttributeDefinitions');
|
$app->get('/attributedefinitions', \RestapiController::class.':getAttributeDefinitions');
|
||||||
$app->put('/attributedefinitions/{id}/name', \RestapiController::class.':changeAttributeDefinitionName');
|
$app->put('/attributedefinitions/{id}/name', \RestapiController::class.':changeAttributeDefinitionName');
|
||||||
$app->get('/echo', \TestController::class.':echoData');
|
$app->get('/echo/{data}', \TestController::class.':echoData');
|
||||||
$app->run();
|
$app->run();
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
$(document).ready( function() {
|
|
||||||
$(".pwd").passStrength({
|
|
||||||
url: "../op/op.Ajax.php",
|
|
||||||
minscore: <?php echo (int) $passwordstrength; ?>,
|
|
||||||
onChange: function(data, target) {
|
|
||||||
pws = <?php echo (int) $passwordstrength; ?>;
|
|
||||||
kids = $('#'+target).children();
|
|
||||||
$(kids[1]).html(Math.round(data.strength));
|
|
||||||
$(kids[0]).width(data.strength);
|
|
||||||
if(data.strength > pws) {
|
|
||||||
$(kids[0]).css('background-color', 'green');
|
|
||||||
} else {
|
|
||||||
$(kids[0]).css('background-color', 'red');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 294 B |
Before Width: | Height: | Size: 305 B |
Before Width: | Height: | Size: 238 B |
Before Width: | Height: | Size: 174 B |
Before Width: | Height: | Size: 185 B |
Before Width: | Height: | Size: 251 B |
Before Width: | Height: | Size: 250 B |
Before Width: | Height: | Size: 193 B |
Before Width: | Height: | Size: 130 B |
Before Width: | Height: | Size: 162 B |
Before Width: | Height: | Size: 165 B |
|
@ -1,522 +0,0 @@
|
||||||
/* Copyright (C) 2006-2008 Malcolm Cowe
|
|
||||||
*/
|
|
||||||
body {
|
|
||||||
font-size: 76%;
|
|
||||||
font-family: sans-serif;
|
|
||||||
}
|
|
||||||
body.login {
|
|
||||||
width: 50%;
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
}
|
|
||||||
.headingContainer {
|
|
||||||
background: #35566c url(img/blue-gradient.png) repeat-x bottom;
|
|
||||||
border: 1px solid rgb(53,85,107);
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
/* IE6 Hack */
|
|
||||||
* html .headingContainer {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.localNavContainer {
|
|
||||||
padding: 2px;
|
|
||||||
margin-bottom: 0.4em;
|
|
||||||
background: #35566c;
|
|
||||||
border: 1px solid rgb(53,85,107);
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
a:link {
|
|
||||||
color: rgb(231,111,0);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
a:visited {
|
|
||||||
color: rgb(231,111,0);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
a:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
a:active {
|
|
||||||
color: rgb(231,111,0);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
.headingContainer a:link {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
.headingContainer a:visited {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
.localNavContainer a:link {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
.localNavContainer a:visited {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
.contentHeading a:link {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
.contentHeading a:visited {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
.localNav a:link {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
.localNav a:visited {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
.localNav a:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
.globalNav a:link {
|
|
||||||
color: rgb(192,102,0);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
.globalNav a:visited {
|
|
||||||
color: rgb(192,102,0);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
.globalNav a:hover {
|
|
||||||
color: rgb(192,102,0);
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
.globalNav a:active {
|
|
||||||
color: rgb(192,102,0);
|
|
||||||
}
|
|
||||||
.mainHeading {
|
|
||||||
padding: 2px 4px 0px 4px;
|
|
||||||
font-size: 1.5em;
|
|
||||||
font-weight: bold;
|
|
||||||
color: white;
|
|
||||||
position: absolute;
|
|
||||||
bottom: 0px;
|
|
||||||
}
|
|
||||||
/* IE6 Hack */
|
|
||||||
* html .mainHeading {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.contentHeading {
|
|
||||||
background: #35566c url(img/blue-gradient.png) repeat-x bottom;
|
|
||||||
color: white;
|
|
||||||
padding: 2px 4px 2px 4px;
|
|
||||||
margin-top: 10px;
|
|
||||||
font-size: 1.2em;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.contentSubHeading {
|
|
||||||
font-weight: bold;
|
|
||||||
border-bottom: 1px solid;
|
|
||||||
margin-top: 1em;
|
|
||||||
margin-bottom: 2px;
|
|
||||||
}
|
|
||||||
.contentSubHeading#first {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#logo {
|
|
||||||
float:left;
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.siteName {
|
|
||||||
background: url(img/bg-global-tl.png) no-repeat top left;
|
|
||||||
padding: 2px 4px 2px 4px;
|
|
||||||
font-size: 1.6em;
|
|
||||||
font-weight: bold;
|
|
||||||
/*width: 40%; */
|
|
||||||
}
|
|
||||||
|
|
||||||
.siteNameLogin {
|
|
||||||
background: url(img/bg-global-tl.png) no-repeat top left;
|
|
||||||
padding: 2px 4px 0px 4px;
|
|
||||||
font-size: 3em;
|
|
||||||
font-weight: bold;
|
|
||||||
font-style: italic;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
.globalBox {
|
|
||||||
background: url(img/bg-global.png) repeat-x top left;
|
|
||||||
position: relative;
|
|
||||||
height: 4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* IE6 Hack */
|
|
||||||
* html .globalBox {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.globalBox#noNav {
|
|
||||||
height: 4em;
|
|
||||||
}
|
|
||||||
.globalBox div#signatory {
|
|
||||||
padding-left: 55px;
|
|
||||||
position: absolute;
|
|
||||||
bottom: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* IE6 Hack */
|
|
||||||
* html .globalBox div#signatory {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.globalNav {
|
|
||||||
padding: 4px;
|
|
||||||
list-style-type: none;
|
|
||||||
margin: 0px;
|
|
||||||
text-align: right;
|
|
||||||
float:right;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* IE6 Hack */
|
|
||||||
* html .globalNav {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.globalNav li {
|
|
||||||
display: inline;
|
|
||||||
padding: 0px 4px 0px 4px;
|
|
||||||
border-left: 1px solid;
|
|
||||||
}
|
|
||||||
.globalNav li#first {
|
|
||||||
border-left: none;
|
|
||||||
padding: 0px 4px 0px 0px;
|
|
||||||
}
|
|
||||||
.globalNav li form {
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
.globalNav li input {
|
|
||||||
font-size: 0.8em;
|
|
||||||
border: 1px solid;
|
|
||||||
padding: 1px;
|
|
||||||
}
|
|
||||||
.globalNav li input#searchButton {
|
|
||||||
border-left:0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
.localNav {
|
|
||||||
padding:1px;
|
|
||||||
margin: 0px;
|
|
||||||
text-align: center;
|
|
||||||
list-style-type: none;
|
|
||||||
text-align:left;
|
|
||||||
color: white;
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
.localNav li {
|
|
||||||
display: inline;
|
|
||||||
padding: 0px 4px 0px 4px;
|
|
||||||
border-left: 1px solid;
|
|
||||||
}
|
|
||||||
.localNav li#first {
|
|
||||||
border-left: none;
|
|
||||||
}
|
|
||||||
.globalTR {
|
|
||||||
background: url(img/bg-global-tr.png) no-repeat top right;
|
|
||||||
float: right;
|
|
||||||
width: 8px;
|
|
||||||
height: 8px;
|
|
||||||
}
|
|
||||||
.smallText {
|
|
||||||
font-size: 0.8em;
|
|
||||||
}
|
|
||||||
.contentContainer {
|
|
||||||
padding: 0px;
|
|
||||||
width: 100%;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
.content {
|
|
||||||
background: url(img/content-gradient.png) repeat-x bottom left;
|
|
||||||
background-color: white;
|
|
||||||
margin-top: 0.2em;
|
|
||||||
padding: 0;
|
|
||||||
border-top: 1px solid #e0e0e0;
|
|
||||||
}
|
|
||||||
.content-l {
|
|
||||||
background: url(img/edge.png) repeat-y bottom left;
|
|
||||||
}
|
|
||||||
.content-r {
|
|
||||||
background: url(img/edge.png) repeat-y bottom right;
|
|
||||||
}
|
|
||||||
.content-br {
|
|
||||||
background: url(img/content-br.png) no-repeat bottom right;
|
|
||||||
}
|
|
||||||
.content-bl {
|
|
||||||
background: url(img/content-bl.png) no-repeat bottom left;
|
|
||||||
padding: 0.6em 1em;
|
|
||||||
}
|
|
||||||
.content input, .content select {
|
|
||||||
font-size: 0.8em;
|
|
||||||
border: 1px solid;
|
|
||||||
}
|
|
||||||
.content textarea {
|
|
||||||
border: 1px solid;
|
|
||||||
font-family: sans-serif;
|
|
||||||
font-size: 1.0em;
|
|
||||||
}
|
|
||||||
td {
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
table.folderView {
|
|
||||||
border-collapse: collapse;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
table.folderView thead tr {
|
|
||||||
border-bottom: 1px solid rgb(189, 190, 192);
|
|
||||||
}
|
|
||||||
table.folderView th, table.folderView td {
|
|
||||||
padding: 0.1em 0.4em;
|
|
||||||
}
|
|
||||||
table.folderView th {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
table.folderView td {
|
|
||||||
border-bottom: 1px solid rgb(224, 224, 224);
|
|
||||||
}
|
|
||||||
table.folderView td.center {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
table.folderView tr.folder {
|
|
||||||
border-bottom: 1px solid rgb(224, 224, 224);
|
|
||||||
background: rgb(240, 240, 240);
|
|
||||||
}
|
|
||||||
table.defaultView {
|
|
||||||
border-collapse: collapse;
|
|
||||||
}
|
|
||||||
table.defaultView thead tr {
|
|
||||||
border-bottom: 1px solid rgb(189, 190, 192);
|
|
||||||
}
|
|
||||||
table.defaultView th, table.defaultView td {
|
|
||||||
padding: 0.1em 0.4em;
|
|
||||||
}
|
|
||||||
table.defaultView th {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
table.defaultView td {
|
|
||||||
border-bottom: 1px solid rgb(224, 224, 224);
|
|
||||||
}
|
|
||||||
table.defaultView td.center {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
table.defaultView tr.folder {
|
|
||||||
border-bottom: 1px solid rgb(224, 224, 224);
|
|
||||||
background: rgb(240, 240, 240);
|
|
||||||
}
|
|
||||||
td#userImage {
|
|
||||||
border: 1px solid rgb(189, 190, 192);
|
|
||||||
}
|
|
||||||
img.userImage {
|
|
||||||
height: 72px;
|
|
||||||
}
|
|
||||||
img.mimeicon {
|
|
||||||
height: 18px;
|
|
||||||
vertical-align: middle;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
img.treeicon {
|
|
||||||
border: none;
|
|
||||||
padding-right: 0.1em;
|
|
||||||
}
|
|
||||||
input.mimeicon {
|
|
||||||
height: 18px;
|
|
||||||
vertical-align: middle;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
ul.reviewer {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
ul.reviewer li {
|
|
||||||
list-style: none;
|
|
||||||
padding: 0.1em 0em;
|
|
||||||
border-top: 1px solid rgb(163, 184, 203);
|
|
||||||
}
|
|
||||||
ul.reviewer li.first {
|
|
||||||
border-top: none;
|
|
||||||
}
|
|
||||||
ul.actions, ul.documentDetail {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
ul.actions li, ul.documentDetail li {
|
|
||||||
list-style: none;
|
|
||||||
padding: 0 0 0.1em 0;
|
|
||||||
}
|
|
||||||
ul.actions li.first, ul.documentDetail li.first {
|
|
||||||
border-top: none;
|
|
||||||
}
|
|
||||||
dl.documentDetail {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
dl.documentDetail dt {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.cbSelectTitle {
|
|
||||||
float:left;
|
|
||||||
width: 9em;
|
|
||||||
}
|
|
||||||
.cbSelectContainer {
|
|
||||||
overflow:auto;
|
|
||||||
height: 8em;
|
|
||||||
border: 1px solid;
|
|
||||||
padding: 0.2em 0;
|
|
||||||
margin: 0.2em 0;
|
|
||||||
}
|
|
||||||
.cbSelectContainer.empty {
|
|
||||||
height: 1em;
|
|
||||||
}
|
|
||||||
.cbSelectList {
|
|
||||||
padding: 0.1em;
|
|
||||||
}
|
|
||||||
.cbSelectItem {
|
|
||||||
list-style-type: none;
|
|
||||||
}
|
|
||||||
div.pageList{
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
padding: 3px;
|
|
||||||
margin-top: 15px;
|
|
||||||
margin-bottom: 15px;
|
|
||||||
}
|
|
||||||
div.pageList span.selected{
|
|
||||||
font-weight: bold;
|
|
||||||
color: #fff;
|
|
||||||
background-color: #35566c;
|
|
||||||
padding: 1px;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* I rather foolishly decided to have the title of the page exist at the
|
|
||||||
* bottom of the containing DIV element. This means using absolute
|
|
||||||
* positioning in order to get the desired effect in a way that is consistent.
|
|
||||||
* However, this causes problems when the fonts are scaled as overlap can
|
|
||||||
* occur with other elements, leading to unclean layout (since absolute
|
|
||||||
* positioning removes the element from the document flow). My solution is to
|
|
||||||
* place an empty element in the page directly before the title that remains
|
|
||||||
* in the document flow. This fakes a margin around the title.
|
|
||||||
* I've also applied this to the login form in the global navigation section.
|
|
||||||
*/
|
|
||||||
span.absSpacerNorm {
|
|
||||||
display: block;
|
|
||||||
height: 1.4em;
|
|
||||||
line-height: 14px;
|
|
||||||
font-size: 1.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
span.absSpacerTitle {
|
|
||||||
display: block;
|
|
||||||
min-height: 1.8em;
|
|
||||||
font-size: 1.5em;
|
|
||||||
padding-top: 0.2em;
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.error {
|
|
||||||
text-align: center;
|
|
||||||
margin: 20px;
|
|
||||||
padding: 20px;
|
|
||||||
border: 1px solid black;
|
|
||||||
border-radius: 15px;
|
|
||||||
background-color: #ff8787;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.disclaimer {
|
|
||||||
margin-top: 1em;
|
|
||||||
padding: 3px;
|
|
||||||
text-align: center;
|
|
||||||
border: 1px solid #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footNote {
|
|
||||||
text-align: center;
|
|
||||||
margin-top: 1em;
|
|
||||||
}
|
|
||||||
.legend{
|
|
||||||
list-style: none;
|
|
||||||
border: 1px solid black;
|
|
||||||
padding: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* these are used in help only */
|
|
||||||
|
|
||||||
h1{
|
|
||||||
font-size: 140%;
|
|
||||||
font-weight: bold;
|
|
||||||
background: #35566c;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2{
|
|
||||||
font-size: 110%;
|
|
||||||
font-weight: bold;
|
|
||||||
border-bottom: 1px solid #999;
|
|
||||||
}
|
|
||||||
/* these are used in calendar */
|
|
||||||
|
|
||||||
table.calendaryear td.today{
|
|
||||||
border: 1px solid #000;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendaryear td.header{
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendaryear td{
|
|
||||||
border: 1px solid #000;
|
|
||||||
padding : 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendaryear table td{
|
|
||||||
border: 0;
|
|
||||||
padding : 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendarmonth , table.calendarweek {
|
|
||||||
margin-top: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendarmonth td, table.calendarweek td{
|
|
||||||
border-bottom: 1px solid #ddd;
|
|
||||||
padding-left: 1em;
|
|
||||||
padding-right: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendarmonth td.separator, table.calendarweek td.separator{
|
|
||||||
border: 0;
|
|
||||||
padding: 0;
|
|
||||||
margin:0;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendarmonth td.header, table.calendarmonth td.todayHeader, table.calendarweek td.header, table.calendarweek td.todayHeader{
|
|
||||||
border: 1px solid #000;
|
|
||||||
background: #eee;
|
|
||||||
font-weight: bold;
|
|
||||||
padding: 1px;
|
|
||||||
color: #222;
|
|
||||||
padding-left: 1em;
|
|
||||||
padding-right: 1em;
|
|
||||||
padding-bottom: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendarmonth td.header a, table.calendarmonth td.todayHeader a, table.calendarweek td.header a, table.calendarweek td.todayHeader a{
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
table.calendarmonth td.today, table.calendarweek td.today{
|
|
||||||
background: #ddd;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendarmonth td.todayHeader, table.calendarweek td.todayHeader,table.calendarmonth td.todayHeader a, table.calendarweek td.todayHeader a{
|
|
||||||
background: #000;
|
|
||||||
color: #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendarweek td.header, table.calendarweek td.todayHeader{
|
|
||||||
padding-bottom: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.searchform td{
|
|
||||||
padding-top: 5px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
padding-right: 5px;
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
$(document).ready( function() {
|
|
||||||
$(".pwd").passStrength({
|
|
||||||
url: "../op/op.Ajax.php",
|
|
||||||
minscore: <?php echo (int) $passwordstrength; ?>,
|
|
||||||
onChange: function(data, target) {
|
|
||||||
pws = <?php echo (int) $passwordstrength; ?>;
|
|
||||||
kids = $('#'+target).children();
|
|
||||||
$(kids[1]).html(Math.round(data.strength));
|
|
||||||
$(kids[0]).width(data.strength);
|
|
||||||
if(data.strength > pws) {
|
|
||||||
$(kids[0]).css('background-color', 'green');
|
|
||||||
} else {
|
|
||||||
$(kids[0]).css('background-color', 'red');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 294 B |
Before Width: | Height: | Size: 305 B |
Before Width: | Height: | Size: 238 B |
Before Width: | Height: | Size: 174 B |
Before Width: | Height: | Size: 185 B |
Before Width: | Height: | Size: 251 B |
Before Width: | Height: | Size: 250 B |
Before Width: | Height: | Size: 193 B |
Before Width: | Height: | Size: 130 B |
Before Width: | Height: | Size: 162 B |
Before Width: | Height: | Size: 165 B |
|
@ -1,556 +0,0 @@
|
||||||
/* Copyright (C) 2010 Matteo Lucarelli
|
|
||||||
*/
|
|
||||||
body {
|
|
||||||
font-size: 70%;
|
|
||||||
font-family: sans-serif;
|
|
||||||
}
|
|
||||||
body.login {
|
|
||||||
width: 50%;
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
}
|
|
||||||
.headingContainer {
|
|
||||||
background: #fff;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
/* IE6 Hack */
|
|
||||||
* html .headingContainer {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.localNavContainer {
|
|
||||||
padding: 2px;
|
|
||||||
margin-bottom: 0.4em;
|
|
||||||
background: #fff;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
a:link {
|
|
||||||
color: rgb(150,50,0);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
a:visited {
|
|
||||||
color: rgb(150,50,0);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
a:hover {
|
|
||||||
color: rgb(231,111,0);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
a:active {
|
|
||||||
color: rgb(150,50,0);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mainHeading {
|
|
||||||
padding: 2px 4px 0px 4px;
|
|
||||||
font-size: 1.5em;
|
|
||||||
font-weight: bold;
|
|
||||||
color: black;
|
|
||||||
position: absolute;
|
|
||||||
bottom: 0px;
|
|
||||||
}
|
|
||||||
/* IE6 Hack */
|
|
||||||
* html .mainHeading {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.contentHeading {
|
|
||||||
background: #7d8288;
|
|
||||||
color: white;
|
|
||||||
padding: 2px 4px 2px 4px;
|
|
||||||
margin-top: 10px;
|
|
||||||
font-size: 1.2em;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.contentSubHeading {
|
|
||||||
font-weight: bold;
|
|
||||||
border-bottom: 1px solid;
|
|
||||||
margin-top: 1em;
|
|
||||||
margin-bottom: 2px;
|
|
||||||
}
|
|
||||||
.contentSubHeading#first {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#logo {
|
|
||||||
float:left;
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.siteName {
|
|
||||||
background: url(img/bg-global-tl.png) no-repeat top left;
|
|
||||||
padding: 2px 4px 0px 4px;
|
|
||||||
font-size: 1.6em;
|
|
||||||
font-weight: bold;
|
|
||||||
font-style: italic;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.siteNameLogin {
|
|
||||||
background: url(img/bg-global-tl.png) no-repeat top left;
|
|
||||||
padding: 2px 4px 0px 4px;
|
|
||||||
font-size: 3em;
|
|
||||||
font-weight: bold;
|
|
||||||
font-style: italic;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.globalBox {
|
|
||||||
background: url(img/bg-global.png) repeat-x top left;
|
|
||||||
position: relative;
|
|
||||||
height: 4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* IE6 Hack */
|
|
||||||
* html .globalBox {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.globalBox#noNav {
|
|
||||||
height: 4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div#signatory {
|
|
||||||
padding-left: 55px;
|
|
||||||
position: absolute;
|
|
||||||
bottom: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* IE6 Hack */
|
|
||||||
* html .globalBox div#signatory {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.globalNav {
|
|
||||||
padding: 4px;
|
|
||||||
list-style-type: none;
|
|
||||||
margin: 0px;
|
|
||||||
text-align: right;
|
|
||||||
float:right;
|
|
||||||
/*font-variant: small-caps;*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/* IE6 Hack */
|
|
||||||
* html .globalNav {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.globalNav li {
|
|
||||||
display: inline;
|
|
||||||
padding: 0px 4px 0px 4px;
|
|
||||||
border-left: 1px solid;
|
|
||||||
}
|
|
||||||
.globalNav li#first {
|
|
||||||
border-left: none;
|
|
||||||
padding: 0px 4px 0px 0px;
|
|
||||||
}
|
|
||||||
.globalNav li form {
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
.globalNav li input {
|
|
||||||
font-size: 0.8em;
|
|
||||||
border: 1px solid;
|
|
||||||
padding: 1px;
|
|
||||||
}
|
|
||||||
.globalNav li input#searchButton {
|
|
||||||
border-left:0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
.localNav {
|
|
||||||
padding:1px;
|
|
||||||
margin: 0px;
|
|
||||||
margin-top: 3px;
|
|
||||||
text-align: left;
|
|
||||||
list-style-type: none;
|
|
||||||
color: white;
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
.localNav li {
|
|
||||||
font-size: 0.8em;
|
|
||||||
display: inline;
|
|
||||||
padding: 2px 4px 2px 4px;
|
|
||||||
border: 1px solid #fff;
|
|
||||||
background-color: #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.globalTR {
|
|
||||||
background: url(img/bg-global-tr.png) no-repeat top right;
|
|
||||||
float: right;
|
|
||||||
width: 8px;
|
|
||||||
height: 8px;
|
|
||||||
}
|
|
||||||
.smallText {
|
|
||||||
font-size: 0.8em;
|
|
||||||
}
|
|
||||||
.contentContainer {
|
|
||||||
padding: 0px;
|
|
||||||
width: 100%;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
.content {
|
|
||||||
background: url(img/content-gradient.png) repeat-x bottom left;
|
|
||||||
background-color: white;
|
|
||||||
padding: 0;
|
|
||||||
border-top: 1px solid #e0e0e0;
|
|
||||||
}
|
|
||||||
.content-l {
|
|
||||||
background: url(img/edge.png) repeat-y bottom left;
|
|
||||||
}
|
|
||||||
.content-r {
|
|
||||||
background: url(img/edge.png) repeat-y bottom right;
|
|
||||||
}
|
|
||||||
.content-br {
|
|
||||||
background: url(img/content-br.png) no-repeat bottom right;
|
|
||||||
}
|
|
||||||
.content-bl {
|
|
||||||
background: url(img/content-bl.png) no-repeat bottom left;
|
|
||||||
padding: 0.6em 1em;
|
|
||||||
}
|
|
||||||
.content input, .content select {
|
|
||||||
font-size: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content textarea {
|
|
||||||
border: 1px solid;
|
|
||||||
font-family: sans-serif;
|
|
||||||
font-size: 1em;
|
|
||||||
}
|
|
||||||
td {
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.userView {
|
|
||||||
border-collapse: collapse;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.userView th {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.groupView{
|
|
||||||
list-style: none;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.groupView ul{
|
|
||||||
margin-top: 5px;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
border-top: 1px solid #000;
|
|
||||||
list-style-image:url("../../out/images/usericon.gif");
|
|
||||||
font-weight: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tree-open{
|
|
||||||
width: 25%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tree-open ul{
|
|
||||||
margin-left: 0px;
|
|
||||||
padding: 0;
|
|
||||||
padding-left:15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tree-closed{
|
|
||||||
width: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.folderView {
|
|
||||||
border-collapse: collapse;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
table.folderView thead tr {
|
|
||||||
border-bottom: 1px solid rgb(189, 190, 192);
|
|
||||||
}
|
|
||||||
table.folderView th, table.folderView td {
|
|
||||||
padding: 0.1em 0.4em;
|
|
||||||
}
|
|
||||||
table.folderView th {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.folderView td {
|
|
||||||
border-bottom: 1px solid rgb(224, 224, 224);
|
|
||||||
}
|
|
||||||
|
|
||||||
table.folderView tr.folder {
|
|
||||||
border-bottom: 1px solid rgb(224, 224, 224);
|
|
||||||
}
|
|
||||||
table.defaultView {
|
|
||||||
border-collapse: collapse;
|
|
||||||
}
|
|
||||||
table.defaultView thead tr {
|
|
||||||
border-bottom: 1px solid rgb(189, 190, 192);
|
|
||||||
}
|
|
||||||
table.defaultView th, table.defaultView td {
|
|
||||||
padding: 0.1em 0.4em;
|
|
||||||
}
|
|
||||||
table.defaultView th {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
table.defaultView td {
|
|
||||||
border-bottom: 1px solid rgb(224, 224, 224);
|
|
||||||
}
|
|
||||||
table.defaultView td.center {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
table.defaultView tr.folder {
|
|
||||||
border-bottom: 1px solid rgb(224, 224, 224);
|
|
||||||
}
|
|
||||||
td#userImage {
|
|
||||||
border: 1px solid rgb(189, 190, 192);
|
|
||||||
}
|
|
||||||
img.userImage {
|
|
||||||
height: 72px;
|
|
||||||
}
|
|
||||||
img.mimeicon {
|
|
||||||
height: 18px;
|
|
||||||
vertical-align: middle;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
img.treeicon {
|
|
||||||
border: none;
|
|
||||||
padding-right: 0.1em;
|
|
||||||
}
|
|
||||||
span.selectedfoldertree{
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
input.mimeicon {
|
|
||||||
height: 18px;
|
|
||||||
vertical-align: middle;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
ul.reviewer {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
ul.reviewer li {
|
|
||||||
list-style: none;
|
|
||||||
padding: 0.1em 0em;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.reviewer li.first {
|
|
||||||
border-top: none;
|
|
||||||
}
|
|
||||||
ul.actions {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
form ul.actions li {
|
|
||||||
list-style: none;
|
|
||||||
padding: 0 0 0.1em 0;
|
|
||||||
}
|
|
||||||
ul.actions li {
|
|
||||||
list-style: none;
|
|
||||||
padding: 0 0 0.1em 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.actions li img{
|
|
||||||
padding: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.documentDetail {
|
|
||||||
margin: 0;
|
|
||||||
padding:0;
|
|
||||||
font-size: 0.8em;
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cbSelectTitle {
|
|
||||||
float:left;
|
|
||||||
width: 9em;
|
|
||||||
}
|
|
||||||
.cbSelectContainer {
|
|
||||||
overflow:auto;
|
|
||||||
height: 6em;
|
|
||||||
width: 30em;
|
|
||||||
border: 1px solid #777;
|
|
||||||
margin-bottom: 3px;
|
|
||||||
}
|
|
||||||
.cbSelectContainer.empty {
|
|
||||||
height: 1em;
|
|
||||||
}
|
|
||||||
.cbSelectList {
|
|
||||||
margin:0;
|
|
||||||
padding: 0.1em;
|
|
||||||
}
|
|
||||||
.cbSelectItem {
|
|
||||||
list-style-type: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.pageList{
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
padding: 3px;
|
|
||||||
margin-top: 15px;
|
|
||||||
margin-bottom: 15px;
|
|
||||||
}
|
|
||||||
div.pageList span.selected{
|
|
||||||
font-weight: bold;
|
|
||||||
color: #fff;
|
|
||||||
background-color: #7d8288;
|
|
||||||
padding: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* I rather foolishly decided to have the title of the page exist at the
|
|
||||||
* bottom of the containing DIV element. This means using absolute
|
|
||||||
* positioning in order to get the desired effect in a way that is consistent.
|
|
||||||
* However, this causes problems when the fonts are scaled as overlap can
|
|
||||||
* occur with other elements, leading to unclean layout (since absolute
|
|
||||||
* positioning removes the element from the document flow). My solution is to
|
|
||||||
* place an empty element in the page directly before the title that remains
|
|
||||||
* in the document flow. This fakes a margin around the title.
|
|
||||||
* I've also applied this to the login form in the global navigation section.
|
|
||||||
*/
|
|
||||||
span.absSpacerNorm {
|
|
||||||
display: block;
|
|
||||||
height: 1.4em;
|
|
||||||
line-height: 14px;
|
|
||||||
font-size: 1.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
span.absSpacerTitle {
|
|
||||||
display: block;
|
|
||||||
min-height: 1.8em;
|
|
||||||
font-size: 1.5em;
|
|
||||||
padding-top: 0.2em;
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.disclaimer {
|
|
||||||
margin-top: 1em;
|
|
||||||
padding: 3px;
|
|
||||||
text-align: center;
|
|
||||||
border: 1px solid #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footNote {
|
|
||||||
text-align: center;
|
|
||||||
margin-top: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.warning{
|
|
||||||
font-weight: bold;
|
|
||||||
padding:0.1em;
|
|
||||||
border: 1px solid rgb(255,0,0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.install_warning{
|
|
||||||
margin: 20px;
|
|
||||||
padding: 10px;
|
|
||||||
background: #fa0;
|
|
||||||
color: #fff;
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 120%;
|
|
||||||
}
|
|
||||||
.error, .install_error{
|
|
||||||
margin: 20px;
|
|
||||||
padding: 10px;
|
|
||||||
background: #f00;
|
|
||||||
color: #fff;
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 120%;
|
|
||||||
}
|
|
||||||
.legend{
|
|
||||||
list-style: none;
|
|
||||||
border: 1px solid black;
|
|
||||||
padding: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre{
|
|
||||||
font-size: 140%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* these are used in help only */
|
|
||||||
|
|
||||||
h1{
|
|
||||||
font-size: 140%;
|
|
||||||
font-weight: bold;
|
|
||||||
background: #7d8288;
|
|
||||||
color: #fff;
|
|
||||||
padding-left: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2{
|
|
||||||
font-size: 110%;
|
|
||||||
font-weight: bold;
|
|
||||||
border-bottom: 1px solid #999;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* these are used in calendar */
|
|
||||||
|
|
||||||
table.calendaryear td.today{
|
|
||||||
border: 1px solid #7d8288;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendaryear td.header{
|
|
||||||
font-weight: bold;
|
|
||||||
color: #444;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendaryear td{
|
|
||||||
border: 1px solid #000;
|
|
||||||
padding : 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendaryear table td{
|
|
||||||
border: 0;
|
|
||||||
padding : 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendarmonth , table.calendarweek {
|
|
||||||
margin-top: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendarmonth td, table.calendarweek td{
|
|
||||||
border-bottom: 1px solid #ddd;
|
|
||||||
padding-left: 1em;
|
|
||||||
padding-right: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendarmonth td.separator, table.calendarweek td.separator{
|
|
||||||
border: 0;
|
|
||||||
padding: 0;
|
|
||||||
margin:0;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendarmonth td.header, table.calendarmonth td.todayHeader, table.calendarweek td.header, table.calendarweek td.todayHeader{
|
|
||||||
border: 1px solid #7d8288;
|
|
||||||
background: #eee;
|
|
||||||
font-weight: bold;
|
|
||||||
padding: 1px;
|
|
||||||
color: #222;
|
|
||||||
padding-left: 1em;
|
|
||||||
padding-right: 1em;
|
|
||||||
padding-bottom: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendarmonth td.header a, table.calendarmonth td.todayHeader a, table.calendarweek td.header a, table.calendarweek td.todayHeader a{
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
table.calendarmonth td.today, table.calendarweek td.today{
|
|
||||||
background: #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendarmonth td.todayHeader, table.calendarweek td.todayHeader,table.calendarmonth td.todayHeader a, table.calendarweek td.todayHeader a{
|
|
||||||
background: #7d8288;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendarweek td.header, table.calendarweek td.todayHeader{
|
|
||||||
padding-bottom: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.searchform td{
|
|
||||||
padding-top: 5px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
padding-right: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.logview{
|
|
||||||
overflow:auto;
|
|
||||||
font-size: 80%;
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
$(document).ready( function() {
|
|
||||||
$(".pwd").passStrength({
|
|
||||||
url: "../op/op.Ajax.php",
|
|
||||||
minscore: <?php echo (int) $passwordstrength; ?>,
|
|
||||||
onChange: function(data, target) {
|
|
||||||
pws = <?php echo (int) $passwordstrength; ?>;
|
|
||||||
kids = $('#'+target).children();
|
|
||||||
$(kids[1]).html(Math.round(data.strength));
|
|
||||||
$(kids[0]).width(data.strength);
|
|
||||||
if(data.strength > pws) {
|
|
||||||
$(kids[0]).css('background-color', 'green');
|
|
||||||
} else {
|
|
||||||
$(kids[0]).css('background-color', 'red');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 294 B |
Before Width: | Height: | Size: 305 B |
Before Width: | Height: | Size: 238 B |
Before Width: | Height: | Size: 174 B |
Before Width: | Height: | Size: 185 B |
Before Width: | Height: | Size: 251 B |
Before Width: | Height: | Size: 250 B |
Before Width: | Height: | Size: 193 B |
Before Width: | Height: | Size: 130 B |
Before Width: | Height: | Size: 162 B |
Before Width: | Height: | Size: 165 B |
|
@ -1,482 +0,0 @@
|
||||||
/* Copyright (C) 2006-2008 Malcolm Cowe
|
|
||||||
*/
|
|
||||||
body {
|
|
||||||
font-size: 90%;
|
|
||||||
font-family: sans-serif;
|
|
||||||
}
|
|
||||||
body.login {
|
|
||||||
width: 50%;
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
}
|
|
||||||
.headingContainer {
|
|
||||||
background: #fff;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
/* IE6 Hack */
|
|
||||||
* html .headingContainer {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.localNavContainer {
|
|
||||||
padding: 2px;
|
|
||||||
margin-bottom: 0.4em;
|
|
||||||
background: #fff;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
a:link {
|
|
||||||
color: rgb(0,0,100);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
a:visited {
|
|
||||||
color: rgb(0,0,100);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
a:hover {
|
|
||||||
color: rgb(255,0,0);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
a:active {
|
|
||||||
color: rgb(0,0,100);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mainHeading {
|
|
||||||
padding: 2px 4px 0px 4px;
|
|
||||||
font-size: 1.5em;
|
|
||||||
font-weight: bold;
|
|
||||||
color: black;
|
|
||||||
position: absolute;
|
|
||||||
bottom: 0px;
|
|
||||||
}
|
|
||||||
/* IE6 Hack */
|
|
||||||
* html .mainHeading {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.contentHeading {
|
|
||||||
background: #000;
|
|
||||||
color: white;
|
|
||||||
padding: 2px 4px 2px 4px;
|
|
||||||
margin-top: 10px;
|
|
||||||
font-size: 1.2em;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.contentSubHeading {
|
|
||||||
font-weight: bold;
|
|
||||||
border-bottom: 1px solid;
|
|
||||||
margin-top: 1em;
|
|
||||||
margin-bottom: 2px;
|
|
||||||
}
|
|
||||||
.contentSubHeading#first {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#logo {
|
|
||||||
float:left;
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.siteName {
|
|
||||||
background: url(img/bg-global-tl.png) no-repeat top left;
|
|
||||||
padding: 2px 4px 0px 4px;
|
|
||||||
font-size: 1.8em;
|
|
||||||
font-weight: bold;
|
|
||||||
font-style: italic;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.siteNameLogin {
|
|
||||||
background: url(img/bg-global-tl.png) no-repeat top left;
|
|
||||||
padding: 2px 4px 0px 4px;
|
|
||||||
font-size: 3em;
|
|
||||||
font-weight: bold;
|
|
||||||
font-style: italic;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.globalBox {
|
|
||||||
background: url(img/bg-global.png) repeat-x top left;
|
|
||||||
position: relative;
|
|
||||||
height: 4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* IE6 Hack */
|
|
||||||
* html .globalBox {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.globalBox#noNav {
|
|
||||||
height: 4em;
|
|
||||||
}
|
|
||||||
.globalBox div#signatory {
|
|
||||||
padding-left: 55px;
|
|
||||||
position: absolute;
|
|
||||||
bottom: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* IE6 Hack */
|
|
||||||
* html .globalBox div#signatory {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.globalNav {
|
|
||||||
padding: 4px;
|
|
||||||
list-style-type: none;
|
|
||||||
margin: 0px;
|
|
||||||
text-align: right;
|
|
||||||
float:right;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* IE6 Hack */
|
|
||||||
* html .globalNav {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.globalNav li {
|
|
||||||
display: inline;
|
|
||||||
padding: 0px 4px 0px 4px;
|
|
||||||
border-left: 1px solid;
|
|
||||||
}
|
|
||||||
.globalNav li#first {
|
|
||||||
border-left: none;
|
|
||||||
padding: 0px 4px 0px 0px;
|
|
||||||
}
|
|
||||||
.globalNav li form {
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
.globalNav li input {
|
|
||||||
font-size: 0.8em;
|
|
||||||
border: 1px solid;
|
|
||||||
padding: 1px;
|
|
||||||
}
|
|
||||||
.globalNav li input#searchButton {
|
|
||||||
border-left:0;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
.localNav {
|
|
||||||
padding:1px;
|
|
||||||
margin: 0px;
|
|
||||||
margin-top: 3px;
|
|
||||||
text-align: left;
|
|
||||||
list-style-type: none;
|
|
||||||
color: white;
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
.localNav li {
|
|
||||||
font-size: 0.8em;
|
|
||||||
display: inline;
|
|
||||||
padding: 2px 4px 2px 4px;
|
|
||||||
border: 1px solid #000;
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.globalTR {
|
|
||||||
background: url(img/bg-global-tr.png) no-repeat top right;
|
|
||||||
float: right;
|
|
||||||
width: 8px;
|
|
||||||
height: 8px;
|
|
||||||
}
|
|
||||||
.smallText {
|
|
||||||
font-size: 0.8em;
|
|
||||||
}
|
|
||||||
.contentContainer {
|
|
||||||
padding: 0px;
|
|
||||||
width: 100%;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
.content {
|
|
||||||
background: url(img/content-gradient.png) repeat-x bottom left;
|
|
||||||
background-color: white;
|
|
||||||
padding: 0;
|
|
||||||
border-top: 1px solid #e0e0e0;
|
|
||||||
}
|
|
||||||
.content-l {
|
|
||||||
background: url(img/edge.png) repeat-y bottom left;
|
|
||||||
}
|
|
||||||
.content-r {
|
|
||||||
background: url(img/edge.png) repeat-y bottom right;
|
|
||||||
}
|
|
||||||
.content-br {
|
|
||||||
background: url(img/content-br.png) no-repeat bottom right;
|
|
||||||
}
|
|
||||||
.content-bl {
|
|
||||||
background: url(img/content-bl.png) no-repeat bottom left;
|
|
||||||
padding: 0.6em 1em;
|
|
||||||
}
|
|
||||||
.content input, .content select {
|
|
||||||
font-size: 0.8em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content textarea {
|
|
||||||
border: 1px solid;
|
|
||||||
font-family: sans-serif;
|
|
||||||
font-size: 1.0em;
|
|
||||||
}
|
|
||||||
td {
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
table.folderView {
|
|
||||||
border-collapse: collapse;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
table.folderView thead tr {
|
|
||||||
border-bottom: 1px solid rgb(189, 190, 192);
|
|
||||||
}
|
|
||||||
table.folderView th, table.folderView td {
|
|
||||||
padding: 0.1em 0.4em;
|
|
||||||
}
|
|
||||||
table.folderView th {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
table.folderView td {
|
|
||||||
border-bottom: 1px solid rgb(224, 224, 224);
|
|
||||||
}
|
|
||||||
table.folderView td.center {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
table.folderView tr.folder {
|
|
||||||
border-bottom: 1px solid rgb(224, 224, 224);
|
|
||||||
background: #fff;
|
|
||||||
}
|
|
||||||
table.defaultView {
|
|
||||||
border-collapse: collapse;
|
|
||||||
}
|
|
||||||
table.defaultView thead tr {
|
|
||||||
border-bottom: 1px solid rgb(189, 190, 192);
|
|
||||||
}
|
|
||||||
table.defaultView th, table.defaultView td {
|
|
||||||
padding: 0.1em 0.4em;
|
|
||||||
}
|
|
||||||
table.defaultView th {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
table.defaultView td {
|
|
||||||
border-bottom: 1px solid rgb(224, 224, 224);
|
|
||||||
}
|
|
||||||
table.defaultView td.center {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
table.defaultView tr.folder {
|
|
||||||
border-bottom: 1px solid rgb(224, 224, 224);
|
|
||||||
background: #fff;
|
|
||||||
}
|
|
||||||
td#userImage {
|
|
||||||
border: 1px solid rgb(189, 190, 192);
|
|
||||||
}
|
|
||||||
img.userImage {
|
|
||||||
height: 72px;
|
|
||||||
}
|
|
||||||
img.mimeicon {
|
|
||||||
height: 18px;
|
|
||||||
vertical-align: middle;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
img.treeicon {
|
|
||||||
border: none;
|
|
||||||
padding-right: 0.1em;
|
|
||||||
}
|
|
||||||
input.mimeicon {
|
|
||||||
height: 18px;
|
|
||||||
vertical-align: middle;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
ul.reviewer {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
ul.reviewer li {
|
|
||||||
list-style: none;
|
|
||||||
padding: 0.1em 0em;
|
|
||||||
border-top: 1px solid rgb(163, 184, 203);
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.reviewer li.first {
|
|
||||||
border-top: none;
|
|
||||||
}
|
|
||||||
ul.actions {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
form ul.actions li {
|
|
||||||
list-style: none;
|
|
||||||
padding: 0 0 0.1em 0;
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
ul.actions li {
|
|
||||||
list-style: none;
|
|
||||||
padding: 0 0 0.1em 0;
|
|
||||||
}
|
|
||||||
ul.actions li.first {
|
|
||||||
border-top: none;
|
|
||||||
}
|
|
||||||
dl.documentDetail {
|
|
||||||
margin: 0;
|
|
||||||
font-size: 0.8em;
|
|
||||||
}
|
|
||||||
dl.documentDetail dt {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.cbSelectTitle {
|
|
||||||
float:left;
|
|
||||||
width: 9em;
|
|
||||||
}
|
|
||||||
.cbSelectContainer {
|
|
||||||
overflow:auto;
|
|
||||||
height: 8em;
|
|
||||||
border: 1px solid;
|
|
||||||
padding: 0.2em 0;
|
|
||||||
margin: 0.2em 0;
|
|
||||||
}
|
|
||||||
.cbSelectContainer.empty {
|
|
||||||
height: 1em;
|
|
||||||
}
|
|
||||||
.cbSelectList {
|
|
||||||
padding: 0.1em;
|
|
||||||
}
|
|
||||||
.cbSelectItem {
|
|
||||||
list-style-type: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.pageList{
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
padding: 3px;
|
|
||||||
margin-top: 15px;
|
|
||||||
margin-bottom: 15px;
|
|
||||||
}
|
|
||||||
div.pageList span.selected{
|
|
||||||
font-weight: bold;
|
|
||||||
color: #fff;
|
|
||||||
background-color: #000;
|
|
||||||
padding: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* I rather foolishly decided to have the title of the page exist at the
|
|
||||||
* bottom of the containing DIV element. This means using absolute
|
|
||||||
* positioning in order to get the desired effect in a way that is consistent.
|
|
||||||
* However, this causes problems when the fonts are scaled as overlap can
|
|
||||||
* occur with other elements, leading to unclean layout (since absolute
|
|
||||||
* positioning removes the element from the document flow). My solution is to
|
|
||||||
* place an empty element in the page directly before the title that remains
|
|
||||||
* in the document flow. This fakes a margin around the title.
|
|
||||||
* I've also applied this to the login form in the global navigation section.
|
|
||||||
*/
|
|
||||||
span.absSpacerNorm {
|
|
||||||
display: block;
|
|
||||||
height: 1.4em;
|
|
||||||
line-height: 14px;
|
|
||||||
font-size: 1.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
span.absSpacerTitle {
|
|
||||||
display: block;
|
|
||||||
min-height: 1.8em;
|
|
||||||
font-size: 1.5em;
|
|
||||||
padding-top: 0.2em;
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.disclaimer {
|
|
||||||
margin-top: 1em;
|
|
||||||
padding: 3px;
|
|
||||||
text-align: center;
|
|
||||||
border: 1px solid #000;
|
|
||||||
background: #000;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footNote {
|
|
||||||
text-align: center;
|
|
||||||
margin-top: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.warning{
|
|
||||||
color: rgb(150,50,0);
|
|
||||||
font-weight: bold;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.error{
|
|
||||||
margin: 20px;
|
|
||||||
padding: 10px;
|
|
||||||
background: #f00;
|
|
||||||
color: #fff;
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 1.2em;
|
|
||||||
}
|
|
||||||
.legend{
|
|
||||||
list-style: none;
|
|
||||||
border: 1px solid black;
|
|
||||||
padding: 5px;
|
|
||||||
}
|
|
||||||
/* these are used in calendar */
|
|
||||||
|
|
||||||
table.calendaryear td.today{
|
|
||||||
border: 1px solid #000;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendaryear td.header{
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendaryear td{
|
|
||||||
border: 1px solid #000;
|
|
||||||
padding : 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendaryear table td{
|
|
||||||
border: 0;
|
|
||||||
padding : 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendarmonth , table.calendarweek {
|
|
||||||
margin-top: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendarmonth td, table.calendarweek td{
|
|
||||||
border-bottom: 1px solid #ddd;
|
|
||||||
padding-left: 1em;
|
|
||||||
padding-right: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendarmonth td.separator, table.calendarweek td.separator{
|
|
||||||
border: 0;
|
|
||||||
padding: 0;
|
|
||||||
margin:0;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendarmonth td.header, table.calendarmonth td.todayHeader, table.calendarweek td.header, table.calendarweek td.todayHeader{
|
|
||||||
border: 1px solid #000;
|
|
||||||
background: #eee;
|
|
||||||
font-weight: bold;
|
|
||||||
padding: 1px;
|
|
||||||
color: #222;
|
|
||||||
padding-left: 1em;
|
|
||||||
padding-right: 1em;
|
|
||||||
padding-bottom: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendarmonth td.header a, table.calendarmonth td.todayHeader a, table.calendarweek td.header a, table.calendarweek td.todayHeader a{
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
table.calendarmonth td.today, table.calendarweek td.today{
|
|
||||||
background: #ddd;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendarmonth td.todayHeader, table.calendarweek td.todayHeader,table.calendarmonth td.todayHeader a, table.calendarweek td.todayHeader a{
|
|
||||||
background: #000;
|
|
||||||
color: #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.calendarweek td.header, table.calendarweek td.todayHeader{
|
|
||||||
padding-bottom: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.searchform td{
|
|
||||||
padding-top: 5px;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
padding-right: 5px;
|
|
||||||
}
|
|
BIN
styles/logo.png
Before Width: | Height: | Size: 1.7 KiB |
|
@ -84,7 +84,7 @@ class SeedDMS_Theme_Style extends SeedDMS_View_Common {
|
||||||
echo "<!DOCTYPE html>\n";
|
echo "<!DOCTYPE html>\n";
|
||||||
echo "<html lang=\"en\">\n<head>\n";
|
echo "<html lang=\"en\">\n<head>\n";
|
||||||
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n";
|
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n";
|
||||||
echo '<meta name="viewport" content="width=device-width, initial-scale=1.0">'."\n";
|
echo '<meta name="viewport" content="width=device-width, initial-scale=1.0" />'."\n";
|
||||||
if($base)
|
if($base)
|
||||||
echo '<base href="'.$base.'">'."\n";
|
echo '<base href="'.$base.'">'."\n";
|
||||||
elseif($this->baseurl)
|
elseif($this->baseurl)
|
||||||
|
@ -92,19 +92,19 @@ class SeedDMS_Theme_Style extends SeedDMS_View_Common {
|
||||||
$sitename = trim(strip_tags($this->params['sitename']));
|
$sitename = trim(strip_tags($this->params['sitename']));
|
||||||
if($this->params['session'])
|
if($this->params['session'])
|
||||||
echo '<link rel="search" type="application/opensearchdescription+xml" href="'.$this->params['settings']->_httpRoot.'out/out.OpensearchDesc.php" title="'.(strlen($sitename)>0 ? $sitename : "SeedDMS").'"/>'."\n";
|
echo '<link rel="search" type="application/opensearchdescription+xml" href="'.$this->params['settings']->_httpRoot.'out/out.OpensearchDesc.php" title="'.(strlen($sitename)>0 ? $sitename : "SeedDMS").'"/>'."\n";
|
||||||
echo '<link href="'.$this->params['settings']->_httpRoot.'styles/'.$this->theme.'/bootstrap/css/bootstrap.css" rel="stylesheet">'."\n";
|
echo '<link href="'.$this->params['settings']->_httpRoot.'styles/'.$this->theme.'/bootstrap/css/bootstrap.css" rel="stylesheet"/>'."\n";
|
||||||
echo '<link href="'.$this->params['settings']->_httpRoot.'styles/'.$this->theme.'/bootstrap/css/bootstrap-responsive.css" rel="stylesheet">'."\n";
|
echo '<link href="'.$this->params['settings']->_httpRoot.'styles/'.$this->theme.'/bootstrap/css/bootstrap-responsive.css" rel="stylesheet"/>'."\n";
|
||||||
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/font-awesome/css/font-awesome.min.css" rel="stylesheet">'."\n";
|
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/font-awesome/css/font-awesome.min.css" rel="stylesheet"/>'."\n";
|
||||||
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/bootstrap-datepicker/css/bootstrap-datepicker.css" rel="stylesheet">'."\n";
|
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/bootstrap-datepicker/css/bootstrap-datepicker.css" rel="stylesheet"/>'."\n";
|
||||||
echo '<link href="'.$this->params['settings']->_httpRoot.'styles/'.$this->theme.'/chosen/css/chosen.css" rel="stylesheet">'."\n";
|
echo '<link href="'.$this->params['settings']->_httpRoot.'styles/'.$this->theme.'/chosen/css/chosen.css" rel="stylesheet"/>'."\n";
|
||||||
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/select2/css/select2.min.css" rel="stylesheet">'."\n";
|
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/select2/css/select2.min.css" rel="stylesheet"/>'."\n";
|
||||||
echo '<link href="'.$this->params['settings']->_httpRoot.'styles/'.$this->theme.'/select2/css/select2-bootstrap.css" rel="stylesheet">'."\n";
|
echo '<link href="'.$this->params['settings']->_httpRoot.'styles/'.$this->theme.'/select2/css/select2-bootstrap.css" rel="stylesheet"/>'."\n";
|
||||||
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/jqtree/jqtree.css" rel="stylesheet">'."\n";
|
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/jqtree/jqtree.css" rel="stylesheet"/>'."\n";
|
||||||
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/styles/application.css" rel="stylesheet">'."\n";
|
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/styles/application.css" rel="stylesheet"/>'."\n";
|
||||||
if($this->extraheader['css'])
|
if($this->extraheader['css'])
|
||||||
echo $this->extraheader['css'];
|
echo $this->extraheader['css'];
|
||||||
if(method_exists($this, 'css'))
|
if(method_exists($this, 'css'))
|
||||||
echo '<link href="'.$this->params['absbaseprefix'].'out/out.'.$this->params['class'].'.php?action=css'.(!empty($_SERVER['QUERY_STRING']) ? '&'.$_SERVER['QUERY_STRING'] : '').'" rel="stylesheet">'."\n";
|
echo '<link href="'.$this->params['absbaseprefix'].'out/out.'.$this->params['class'].'.php?action=css'.(!empty($_SERVER['QUERY_STRING']) ? '&'.$_SERVER['QUERY_STRING'] : '').'" rel="stylesheet"/>'."\n";
|
||||||
|
|
||||||
echo '<script type="text/javascript" src="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/jquery/jquery.min.js"></script>'."\n";
|
echo '<script type="text/javascript" src="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/jquery/jquery.min.js"></script>'."\n";
|
||||||
if($this->extraheader['js'])
|
if($this->extraheader['js'])
|
||||||
|
@ -181,8 +181,10 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
||||||
$tmp['action'] = 'webrootjs';
|
$tmp['action'] = 'webrootjs';
|
||||||
if(isset($tmp['formtoken']))
|
if(isset($tmp['formtoken']))
|
||||||
unset($tmp['formtoken']);
|
unset($tmp['formtoken']);
|
||||||
|
if(isset($tmp['referuri']))
|
||||||
|
unset($tmp['referuri']);
|
||||||
if(!empty($this->params['class']))
|
if(!empty($this->params['class']))
|
||||||
echo '<script src="'.$this->params['absbaseprefix'].'out/out.'.$this->params['class'].'.php?'.http_build_query($tmp).'"></script>'."\n";
|
echo '<script src="'.$this->params['absbaseprefix'].'out/out.'.$this->params['class'].'.php?'.htmlentities(http_build_query($tmp)).'"></script>'."\n";
|
||||||
echo '<script src="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/styles/application.js"></script>'."\n";
|
echo '<script src="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/styles/application.js"></script>'."\n";
|
||||||
if($this->params['enablemenutasks'] && isset($this->params['user']) && $this->params['user']) {
|
if($this->params['enablemenutasks'] && isset($this->params['user']) && $this->params['user']) {
|
||||||
$this->addFooterJS('SeedDMSTask.run();');
|
$this->addFooterJS('SeedDMSTask.run();');
|
||||||
|
@ -205,12 +207,12 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
||||||
}
|
}
|
||||||
$tmp['action'] = 'footerjs';
|
$tmp['action'] = 'footerjs';
|
||||||
$tmp['hashjs'] = $hashjs;
|
$tmp['hashjs'] = $hashjs;
|
||||||
echo '<script src="'.$this->params['absbaseprefix'].'out/out.'.$this->params['class'].'.php?'.http_build_query($tmp).'"></script>'."\n";
|
echo '<script src="'.$this->params['absbaseprefix'].'out/out.'.$this->params['class'].'.php?'.htmlentities(http_build_query($tmp)).'"></script>'."\n";
|
||||||
}
|
}
|
||||||
if(method_exists($this, 'js')) {
|
if(method_exists($this, 'js')) {
|
||||||
parse_str($_SERVER['QUERY_STRING'], $tmp);
|
parse_str($_SERVER['QUERY_STRING'], $tmp);
|
||||||
$tmp['action'] = 'js';
|
$tmp['action'] = 'js';
|
||||||
echo '<script src="'.$this->params['absbaseprefix'].'out/out.'.$this->params['class'].'.php?'.http_build_query($tmp).'"></script>'."\n";
|
echo '<script src="'.$this->params['absbaseprefix'].'out/out.'.$this->params['class'].'.php?'.htmlentities(http_build_query($tmp)).'"></script>'."\n";
|
||||||
}
|
}
|
||||||
echo "</body>\n</html>\n";
|
echo "</body>\n</html>\n";
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
@ -289,7 +291,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
||||||
echo "<div class=\"navbar navbar-inverse navbar-fixed-top\">\n";
|
echo "<div class=\"navbar navbar-inverse navbar-fixed-top\">\n";
|
||||||
echo " <div class=\"navbar-inner\">\n";
|
echo " <div class=\"navbar-inner\">\n";
|
||||||
echo " <div class=\"container-fluid\">\n";
|
echo " <div class=\"container-fluid\">\n";
|
||||||
echo " <a href=\"".$this->params['settings']->_httpRoot."out/out.ViewFolder.php?folderid=".(!empty($this->params['dms']) ? $this->params['dms']->getRootFolder()->getId() : '1')."\">".(!empty($this->extraheader['logo']) ? '<img src="'.$this->extraheader['logo'].'">' : '<img src="'.$this->params['settings']->_httpRoot.'views/bootstrap/images/seeddms-logo.svg">')."</a>";
|
echo " <a href=\"".$this->params['settings']->_httpRoot."out/out.ViewFolder.php?folderid=".(!empty($this->params['dms']) ? $this->params['dms']->getRootFolder()->getId() : '1')."\">".(!empty($this->extraheader['logo']) ? '<img src="'.$this->extraheader['logo'].'"/>' : '<img src="'.$this->params['settings']->_httpRoot.'views/bootstrap/images/seeddms-logo.svg"/>')."</a>";
|
||||||
echo " <a class=\"brand\" href=\"".$this->params['settings']->_httpRoot."out/out.ViewFolder.php\">".(strlen($this->params['sitename'])>0 ? $this->params['sitename'] : "SeedDMS")."</a>\n";
|
echo " <a class=\"brand\" href=\"".$this->params['settings']->_httpRoot."out/out.ViewFolder.php\">".(strlen($this->params['sitename'])>0 ? $this->params['sitename'] : "SeedDMS")."</a>\n";
|
||||||
echo " </div>\n";
|
echo " </div>\n";
|
||||||
echo " </div>\n";
|
echo " </div>\n";
|
||||||
|
@ -1229,7 +1231,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
||||||
(!empty($value['class']) ? ' class="'.$value['class'].'"' : '').
|
(!empty($value['class']) ? ' class="'.$value['class'].'"' : '').
|
||||||
(!empty($value['rows']) ? ' rows="'.$value['rows'].'"' : '').
|
(!empty($value['rows']) ? ' rows="'.$value['rows'].'"' : '').
|
||||||
(!empty($value['cols']) ? ' rows="'.$value['cols'].'"' : '').
|
(!empty($value['cols']) ? ' rows="'.$value['cols'].'"' : '').
|
||||||
(!empty($value['required']) ? ' required' : '').">".(!empty($value['value']) ? $value['value'] : '')."</textarea>";
|
(!empty($value['required']) ? ' required="required"' : '').">".(!empty($value['value']) ? $value['value'] : '')."</textarea>";
|
||||||
break;
|
break;
|
||||||
case 'plain':
|
case 'plain':
|
||||||
echo $value['value'];
|
echo $value['value'];
|
||||||
|
@ -1248,11 +1250,11 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
||||||
(!empty($value['autocomplete']) ? ' autocomplete="'.$value['autocomplete'].'"' : '').
|
(!empty($value['autocomplete']) ? ' autocomplete="'.$value['autocomplete'].'"' : '').
|
||||||
(isset($value['min']) ? ' min="'.$value['min'].'"' : '').
|
(isset($value['min']) ? ' min="'.$value['min'].'"' : '').
|
||||||
(!empty($value['checked']) ? ' checked' : '').
|
(!empty($value['checked']) ? ' checked' : '').
|
||||||
(!empty($value['required']) ? ' required' : '');
|
(!empty($value['required']) ? ' required="required"' : '');
|
||||||
if(!empty($value['attributes']) && is_array($value['attributes']))
|
if(!empty($value['attributes']) && is_array($value['attributes']))
|
||||||
foreach($value['attributes'] as $a)
|
foreach($value['attributes'] as $a)
|
||||||
echo ' '.$a[0].'="'.$a[1].'"';
|
echo ' '.$a[0].'="'.$a[1].'"';
|
||||||
echo ">";
|
echo "/>";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1747,7 +1749,7 @@ $(document).ready(function() {
|
||||||
$content = '';
|
$content = '';
|
||||||
$content .= '
|
$content .= '
|
||||||
<div class="input-append">
|
<div class="input-append">
|
||||||
<input type="text" name="'.$fieldname.'" id="'.$fieldname.'" value="'.htmlspecialchars($keywords).'"'.($strictformcheck ? ' required' : '').' />';
|
<input type="text" name="'.$fieldname.'" id="'.$fieldname.'" value="'.htmlspecialchars($keywords).'"'.($strictformcheck ? ' required="required"' : '').' />';
|
||||||
$content .= $this->getModalBoxLink(
|
$content .= $this->getModalBoxLink(
|
||||||
array(
|
array(
|
||||||
'target' => 'keywordChooser',
|
'target' => 'keywordChooser',
|
||||||
|
@ -1892,11 +1894,11 @@ $(document).ready(function() {
|
||||||
break;
|
break;
|
||||||
case SeedDMS_Core_AttributeDefinition::type_email:
|
case SeedDMS_Core_AttributeDefinition::type_email:
|
||||||
$objvalue = $attribute ? (is_object($attribute) ? $attribute->getValue() : $attribute) : '';
|
$objvalue = $attribute ? (is_object($attribute) ? $attribute->getValue() : $attribute) : '';
|
||||||
$content .= "<input type=\"text\" name=\"".$fieldname."[".$attrdef->getId()."]\" value=\"".htmlspecialchars($objvalue)."\"".((!$norequire && $attrdef->getMinValues() > 0) ? ' required' : '').' data-rule-email="true"'." />";
|
$content .= "<input type=\"text\" name=\"".$fieldname."[".$attrdef->getId()."]\" value=\"".htmlspecialchars($objvalue)."\"".((!$norequire && $attrdef->getMinValues() > 0) ? ' required="required"' : '').' data-rule-email="true"'." />";
|
||||||
break;
|
break;
|
||||||
case SeedDMS_Core_AttributeDefinition::type_float:
|
case SeedDMS_Core_AttributeDefinition::type_float:
|
||||||
$objvalue = $attribute ? (is_object($attribute) ? $attribute->getValue() : $attribute) : '';
|
$objvalue = $attribute ? (is_object($attribute) ? $attribute->getValue() : $attribute) : '';
|
||||||
$content .= "<input type=\"text\" id=\"".$fieldname."_".$attrdef->getId()."\" name=\"".$fieldname."[".$attrdef->getId()."]\" value=\"".htmlspecialchars($objvalue)."\"".((!$norequire && $attrdef->getMinValues() > 0) ? ' required' : '')." data-rule-number=\"true\"/>";
|
$content .= "<input type=\"text\" id=\"".$fieldname."_".$attrdef->getId()."\" name=\"".$fieldname."[".$attrdef->getId()."]\" value=\"".htmlspecialchars($objvalue)."\"".((!$norequire && $attrdef->getMinValues() > 0) ? ' required="required"' : '')." data-rule-number=\"true\"/>";
|
||||||
break;
|
break;
|
||||||
case SeedDMS_Core_AttributeDefinition::type_folder:
|
case SeedDMS_Core_AttributeDefinition::type_folder:
|
||||||
$objvalue = $attribute ? (is_object($attribute) ? (int) $attribute->getValue() : (int) $attribute) : 0;
|
$objvalue = $attribute ? (is_object($attribute) ? (int) $attribute->getValue() : (int) $attribute) : 0;
|
||||||
|
@ -1963,7 +1965,7 @@ $(document).ready(function() {
|
||||||
} else {
|
} else {
|
||||||
$content .= "\" data-allow-clear=\"true\"";
|
$content .= "\" data-allow-clear=\"true\"";
|
||||||
}
|
}
|
||||||
$content .= "".((!$norequire && $attrdef->getMinValues() > 0) ? ' required' : '')." class=\"chzn-select\" data-placeholder=\"".getMLText("select_value")."\">";
|
$content .= "".((!$norequire && $attrdef->getMinValues() > 0) ? ' required="required"' : '')." class=\"chzn-select\" data-placeholder=\"".getMLText("select_value")."\">";
|
||||||
if(!$attrdef->getMultipleValues()) {
|
if(!$attrdef->getMultipleValues()) {
|
||||||
$content .= "<option value=\"\"></option>";
|
$content .= "<option value=\"\"></option>";
|
||||||
}
|
}
|
||||||
|
@ -1982,9 +1984,9 @@ $(document).ready(function() {
|
||||||
} else {
|
} else {
|
||||||
$objvalue = $attribute ? (is_object($attribute) ? $attribute->getValue() : $attribute) : '';
|
$objvalue = $attribute ? (is_object($attribute) ? $attribute->getValue() : $attribute) : '';
|
||||||
if(strlen($objvalue) > 80) {
|
if(strlen($objvalue) > 80) {
|
||||||
$content .= "<textarea id=\"".$fieldname."_".$attrdef->getId()."\" class=\"input-xxlarge\" name=\"".$fieldname."[".$attrdef->getId()."]\"".((!$norequire && $attrdef->getMinValues() > 0) ? ' required' : '').">".htmlspecialchars($objvalue)."</textarea>";
|
$content .= "<textarea id=\"".$fieldname."_".$attrdef->getId()."\" class=\"input-xxlarge\" name=\"".$fieldname."[".$attrdef->getId()."]\"".((!$norequire && $attrdef->getMinValues() > 0) ? ' required="required"' : '').">".htmlspecialchars($objvalue)."</textarea>";
|
||||||
} else {
|
} else {
|
||||||
$content .= "<input type=\"text\" id=\"".$fieldname."_".$attrdef->getId()."\" name=\"".$fieldname."[".$attrdef->getId()."]\" value=\"".htmlspecialchars($objvalue)."\"".((!$norequire && $attrdef->getMinValues() > 0) ? ' required' : '').($attrdef->getType() == SeedDMS_Core_AttributeDefinition::type_int ? ' data-rule-digits="true"' : '')." />";
|
$content .= "<input type=\"text\" id=\"".$fieldname."_".$attrdef->getId()."\" name=\"".$fieldname."[".$attrdef->getId()."]\" value=\"".htmlspecialchars($objvalue)."\"".((!$norequire && $attrdef->getMinValues() > 0) ? ' required="required"' : '').($attrdef->getType() == SeedDMS_Core_AttributeDefinition::type_int ? ' data-rule-digits="true"' : '')." />";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -84,7 +84,7 @@ class SeedDMS_Theme_Style extends SeedDMS_View_Common {
|
||||||
echo "<!DOCTYPE html>\n";
|
echo "<!DOCTYPE html>\n";
|
||||||
echo "<html lang=\"en\">\n<head>\n";
|
echo "<html lang=\"en\">\n<head>\n";
|
||||||
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n";
|
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n";
|
||||||
echo '<meta name="viewport" content="width=device-width, initial-scale=1.0">'."\n";
|
echo '<meta name="viewport" content="width=device-width, initial-scale=1.0" />'."\n";
|
||||||
if($base)
|
if($base)
|
||||||
echo '<base href="'.$base.'">'."\n";
|
echo '<base href="'.$base.'">'."\n";
|
||||||
elseif($this->baseurl)
|
elseif($this->baseurl)
|
||||||
|
@ -93,19 +93,19 @@ class SeedDMS_Theme_Style extends SeedDMS_View_Common {
|
||||||
if($this->params['session'])
|
if($this->params['session'])
|
||||||
echo '<link rel="search" type="application/opensearchdescription+xml" href="'.$this->params['settings']->_httpRoot.'out/out.OpensearchDesc.php" title="'.(strlen($sitename)>0 ? $sitename : "SeedDMS").'"/>'."\n";
|
echo '<link rel="search" type="application/opensearchdescription+xml" href="'.$this->params['settings']->_httpRoot.'out/out.OpensearchDesc.php" title="'.(strlen($sitename)>0 ? $sitename : "SeedDMS").'"/>'."\n";
|
||||||
$parenttheme = 'bootstrap';
|
$parenttheme = 'bootstrap';
|
||||||
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/styles/seeddms.css" rel="stylesheet">'."\n";
|
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/styles/seeddms.css" rel="stylesheet"/>'."\n";
|
||||||
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/font-awesome/css/font-awesome.min.css" rel="stylesheet">'."\n";
|
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/font-awesome/css/font-awesome.min.css" rel="stylesheet"/>'."\n";
|
||||||
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/bootstrap-datepicker/css/bootstrap-datepicker.css" rel="stylesheet">'."\n";
|
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/bootstrap-datepicker/css/bootstrap-datepicker.css" rel="stylesheet"/>'."\n";
|
||||||
echo '<link href="'.$this->params['settings']->_httpRoot.'styles/'.$parenttheme.'/chosen/css/chosen.css" rel="stylesheet">'."\n";
|
echo '<link href="'.$this->params['settings']->_httpRoot.'styles/'.$parenttheme.'/chosen/css/chosen.css" rel="stylesheet"/>'."\n";
|
||||||
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/select2/css/select2.min.css" rel="stylesheet">'."\n";
|
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/select2/css/select2.min.css" rel="stylesheet"/>'."\n";
|
||||||
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/select2-bootstrap4-theme/select2-bootstrap4.min.css" rel="stylesheet">'."\n";
|
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/select2-bootstrap4-theme/select2-bootstrap4.min.css" rel="stylesheet"/>'."\n";
|
||||||
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/jqtree/jqtree.css" rel="stylesheet">'."\n";
|
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/jqtree/jqtree.css" rel="stylesheet"/>'."\n";
|
||||||
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/styles/application.css" rel="stylesheet">'."\n";
|
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/styles/application.css" rel="stylesheet"/>'."\n";
|
||||||
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/styles/styles.css" rel="stylesheet">'."\n";
|
echo '<link href="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/styles/styles.css" rel="stylesheet"/>'."\n";
|
||||||
if($this->extraheader['css'])
|
if($this->extraheader['css'])
|
||||||
echo $this->extraheader['css'];
|
echo $this->extraheader['css'];
|
||||||
if(method_exists($this, 'css'))
|
if(method_exists($this, 'css'))
|
||||||
echo '<link href="'.$this->params['absbaseprefix'].'out/out.'.$this->params['class'].'.php?action=css'.(!empty($_SERVER['QUERY_STRING']) ? '&'.$_SERVER['QUERY_STRING'] : '').'" rel="stylesheet">'."\n";
|
echo '<link href="'.$this->params['absbaseprefix'].'out/out.'.$this->params['class'].'.php?action=css'.(!empty($_SERVER['QUERY_STRING']) ? '&'.$_SERVER['QUERY_STRING'] : '').'" rel="stylesheet"/>'."\n";
|
||||||
|
|
||||||
echo '<script type="text/javascript" src="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/jquery/jquery.min.js"></script>'."\n";
|
echo '<script type="text/javascript" src="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/jquery/jquery.min.js"></script>'."\n";
|
||||||
if($this->extraheader['js'])
|
if($this->extraheader['js'])
|
||||||
|
@ -181,8 +181,10 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
||||||
$tmp['action'] = 'webrootjs';
|
$tmp['action'] = 'webrootjs';
|
||||||
if(isset($tmp['formtoken']))
|
if(isset($tmp['formtoken']))
|
||||||
unset($tmp['formtoken']);
|
unset($tmp['formtoken']);
|
||||||
|
if(isset($tmp['referuri']))
|
||||||
|
unset($tmp['referuri']);
|
||||||
if(!empty($this->params['class']))
|
if(!empty($this->params['class']))
|
||||||
echo '<script src="'.$this->params['absbaseprefix'].'out/out.'.$this->params['class'].'.php?'.http_build_query($tmp).'"></script>'."\n";
|
echo '<script src="'.$this->params['absbaseprefix'].'out/out.'.$this->params['class'].'.php?'.htmlentities(http_build_query($tmp)).'"></script>'."\n";
|
||||||
echo '<script src="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/styles/application.js"></script>'."\n";
|
echo '<script src="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/styles/application.js"></script>'."\n";
|
||||||
if($this->params['enablemenutasks'] && isset($this->params['user']) && $this->params['user']) {
|
if($this->params['enablemenutasks'] && isset($this->params['user']) && $this->params['user']) {
|
||||||
$this->addFooterJS('SeedDMSTask.run();');
|
$this->addFooterJS('SeedDMSTask.run();');
|
||||||
|
@ -205,12 +207,12 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
||||||
}
|
}
|
||||||
$tmp['action'] = 'footerjs';
|
$tmp['action'] = 'footerjs';
|
||||||
$tmp['hashjs'] = $hashjs;
|
$tmp['hashjs'] = $hashjs;
|
||||||
echo '<script src="'.$this->params['absbaseprefix'].'out/out.'.$this->params['class'].'.php?'.http_build_query($tmp).'"></script>'."\n";
|
echo '<script src="'.$this->params['absbaseprefix'].'out/out.'.$this->params['class'].'.php?'.htmlentities(http_build_query($tmp)).'"></script>'."\n";
|
||||||
}
|
}
|
||||||
if(method_exists($this, 'js')) {
|
if(method_exists($this, 'js')) {
|
||||||
parse_str($_SERVER['QUERY_STRING'], $tmp);
|
parse_str($_SERVER['QUERY_STRING'], $tmp);
|
||||||
$tmp['action'] = 'js';
|
$tmp['action'] = 'js';
|
||||||
echo '<script src="'.$this->params['absbaseprefix'].'out/out.'.$this->params['class'].'.php?'.http_build_query($tmp).'"></script>'."\n";
|
echo '<script src="'.$this->params['absbaseprefix'].'out/out.'.$this->params['class'].'.php?'.htmlentities(http_build_query($tmp)).'"></script>'."\n";
|
||||||
}
|
}
|
||||||
echo "</body>\n</html>\n";
|
echo "</body>\n</html>\n";
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
@ -298,7 +300,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
||||||
|
|
||||||
function globalBanner() { /* {{{ */
|
function globalBanner() { /* {{{ */
|
||||||
echo "<nav class=\"navbar navbar-expand-lg navbar-dark bg-dark fixed-top\">\n";
|
echo "<nav class=\"navbar navbar-expand-lg navbar-dark bg-dark fixed-top\">\n";
|
||||||
echo " <a class=\"navbar-brand\" href=\"".$this->params['settings']->_httpRoot."out/out.ViewFolder.php\">".(!empty($this->extraheader['logo']) ? '<img src="'.$this->extraheader['logo'].'">' : '<img src="'.$this->params['settings']->_httpRoot.'views/bootstrap4/images/seeddms-logo.svg">')." <span class=\"d-none d-md-inline-block ml-4\">".(strlen($this->params['sitename'])>0 ? $this->params['sitename'] : "SeedDMS")."</span></a>\n";
|
echo " <a class=\"navbar-brand\" href=\"".$this->params['settings']->_httpRoot."out/out.ViewFolder.php\">".(!empty($this->extraheader['logo']) ? '<img src="'.$this->extraheader['logo'].'"/>' : '<img src="'.$this->params['settings']->_httpRoot.'views/bootstrap4/images/seeddms-logo.svg"/>')." <span class=\"d-none d-md-inline-block ml-4\">".(strlen($this->params['sitename'])>0 ? $this->params['sitename'] : "SeedDMS")."</span></a>\n";
|
||||||
echo "</nav>\n";
|
echo "</nav>\n";
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
|
@ -1128,7 +1130,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
||||||
(empty($value['class']) ? ' class="form-control"' : ' class="form-control '.$value['class'].'"').
|
(empty($value['class']) ? ' class="form-control"' : ' class="form-control '.$value['class'].'"').
|
||||||
(!empty($value['rows']) ? ' rows="'.$value['rows'].'"' : '').
|
(!empty($value['rows']) ? ' rows="'.$value['rows'].'"' : '').
|
||||||
(!empty($value['cols']) ? ' rows="'.$value['cols'].'"' : '').
|
(!empty($value['cols']) ? ' rows="'.$value['cols'].'"' : '').
|
||||||
(!empty($value['required']) ? ' required' : '').">".(!empty($value['value']) ? $value['value'] : '')."</textarea>";
|
(!empty($value['required']) ? ' required="required"' : '').">".(!empty($value['value']) ? $value['value'] : '')."</textarea>";
|
||||||
break;
|
break;
|
||||||
case 'plain':
|
case 'plain':
|
||||||
echo $value['value'];
|
echo $value['value'];
|
||||||
|
@ -1147,7 +1149,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
||||||
(!empty($value['placeholder']) ? ' placeholder="'.$value['placeholder'].'"' : '').
|
(!empty($value['placeholder']) ? ' placeholder="'.$value['placeholder'].'"' : '').
|
||||||
(!empty($value['autocomplete']) ? ' autocomplete="'.$value['autocomplete'].'"' : '').
|
(!empty($value['autocomplete']) ? ' autocomplete="'.$value['autocomplete'].'"' : '').
|
||||||
(!empty($value['checked']) ? ' checked' : '').
|
(!empty($value['checked']) ? ' checked' : '').
|
||||||
(!empty($value['required']) ? ' required' : '');
|
(!empty($value['required']) ? ' required="required"' : '');
|
||||||
if(!empty($value['attributes']) && is_array($value['attributes']))
|
if(!empty($value['attributes']) && is_array($value['attributes']))
|
||||||
foreach($value['attributes'] as $a)
|
foreach($value['attributes'] as $a)
|
||||||
echo ' '.$a[0].'="'.$a[1].'"';
|
echo ' '.$a[0].'="'.$a[1].'"';
|
||||||
|
@ -1165,11 +1167,11 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
||||||
(!empty($value['autocomplete']) ? ' autocomplete="'.$value['autocomplete'].'"' : '').
|
(!empty($value['autocomplete']) ? ' autocomplete="'.$value['autocomplete'].'"' : '').
|
||||||
(isset($value['min']) ? ' min="'.$value['min'].'"' : '').
|
(isset($value['min']) ? ' min="'.$value['min'].'"' : '').
|
||||||
(!empty($value['checked']) ? ' checked' : '').
|
(!empty($value['checked']) ? ' checked' : '').
|
||||||
(!empty($value['required']) ? ' required' : '');
|
(!empty($value['required']) ? ' required="required"' : '');
|
||||||
if(!empty($value['attributes']) && is_array($value['attributes']))
|
if(!empty($value['attributes']) && is_array($value['attributes']))
|
||||||
foreach($value['attributes'] as $a)
|
foreach($value['attributes'] as $a)
|
||||||
echo ' '.$a[0].'="'.$a[1].'"';
|
echo ' '.$a[0].'="'.$a[1].'"';
|
||||||
echo ">";
|
echo "/>";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1695,7 +1697,7 @@ $(document).ready(function() {
|
||||||
$content = '';
|
$content = '';
|
||||||
$content .= '
|
$content .= '
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input class="form-control" type="text" name="'.$fieldname.'" id="'.$fieldname.'" value="'.htmlspecialchars($keywords).'"'.($strictformcheck ? ' required' : '').' />
|
<input class="form-control" type="text" name="'.$fieldname.'" id="'.$fieldname.'" value="'.htmlspecialchars($keywords).'"'.($strictformcheck ? ' required="required"' : '').' />
|
||||||
<div class="input-group-append">';
|
<div class="input-group-append">';
|
||||||
$content .= $this->getModalBoxLink(
|
$content .= $this->getModalBoxLink(
|
||||||
array(
|
array(
|
||||||
|
@ -1852,11 +1854,11 @@ $(document).ready(function() {
|
||||||
break;
|
break;
|
||||||
case SeedDMS_Core_AttributeDefinition::type_email:
|
case SeedDMS_Core_AttributeDefinition::type_email:
|
||||||
$objvalue = $attribute ? (is_object($attribute) ? $attribute->getValue() : $attribute) : '';
|
$objvalue = $attribute ? (is_object($attribute) ? $attribute->getValue() : $attribute) : '';
|
||||||
$content .= "<input type=\"text\" class=\"form-control\" name=\"".$fieldname."[".$attrdef->getId()."]\" value=\"".htmlspecialchars($objvalue)."\"".((!$norequire && $attrdef->getMinValues() > 0) ? ' required' : '').' data-rule-email="true"'." />";
|
$content .= "<input type=\"text\" class=\"form-control\" name=\"".$fieldname."[".$attrdef->getId()."]\" value=\"".htmlspecialchars($objvalue)."\"".((!$norequire && $attrdef->getMinValues() > 0) ? ' required="required"' : '').' data-rule-email="true"'." />";
|
||||||
break;
|
break;
|
||||||
case SeedDMS_Core_AttributeDefinition::type_float:
|
case SeedDMS_Core_AttributeDefinition::type_float:
|
||||||
$objvalue = $attribute ? (is_object($attribute) ? $attribute->getValue() : $attribute) : '';
|
$objvalue = $attribute ? (is_object($attribute) ? $attribute->getValue() : $attribute) : '';
|
||||||
$content .= "<input type=\"text\" class=\"form-control\" id=\"".$fieldname."_".$attrdef->getId()."\" name=\"".$fieldname."[".$attrdef->getId()."]\" value=\"".htmlspecialchars($objvalue)."\"".((!$norequire && $attrdef->getMinValues() > 0) ? ' required' : '')." data-rule-number=\"true\"/>";
|
$content .= "<input type=\"text\" class=\"form-control\" id=\"".$fieldname."_".$attrdef->getId()."\" name=\"".$fieldname."[".$attrdef->getId()."]\" value=\"".htmlspecialchars($objvalue)."\"".((!$norequire && $attrdef->getMinValues() > 0) ? ' required="required"' : '')." data-rule-number=\"true\"/>";
|
||||||
break;
|
break;
|
||||||
case SeedDMS_Core_AttributeDefinition::type_folder:
|
case SeedDMS_Core_AttributeDefinition::type_folder:
|
||||||
$objvalue = $attribute ? (is_object($attribute) ? (int) $attribute->getValue() : (int) $attribute) : 0;
|
$objvalue = $attribute ? (is_object($attribute) ? (int) $attribute->getValue() : (int) $attribute) : 0;
|
||||||
|
@ -1923,7 +1925,7 @@ $(document).ready(function() {
|
||||||
} else {
|
} else {
|
||||||
$content .= "\" data-allow-clear=\"true\"";
|
$content .= "\" data-allow-clear=\"true\"";
|
||||||
}
|
}
|
||||||
$content .= "".((!$norequire && $attrdef->getMinValues() > 0) ? ' required' : '')." class=\"form-control chzn-select\" data-placeholder=\"".getMLText("select_value")."\">";
|
$content .= "".((!$norequire && $attrdef->getMinValues() > 0) ? ' required="required"' : '')." class=\"form-control chzn-select\" data-placeholder=\"".getMLText("select_value")."\">";
|
||||||
if(!$attrdef->getMultipleValues()) {
|
if(!$attrdef->getMultipleValues()) {
|
||||||
$content .= "<option value=\"\"></option>";
|
$content .= "<option value=\"\"></option>";
|
||||||
}
|
}
|
||||||
|
@ -1942,9 +1944,9 @@ $(document).ready(function() {
|
||||||
} else {
|
} else {
|
||||||
$objvalue = $attribute ? (is_object($attribute) ? $attribute->getValue() : $attribute) : '';
|
$objvalue = $attribute ? (is_object($attribute) ? $attribute->getValue() : $attribute) : '';
|
||||||
if(strlen($objvalue) > 80) {
|
if(strlen($objvalue) > 80) {
|
||||||
$content .= "<textarea class=\"form-control\" id=\"".$fieldname."_".$attrdef->getId()."\" class=\"input-xxlarge\" name=\"".$fieldname."[".$attrdef->getId()."]\"".((!$norequire && $attrdef->getMinValues() > 0) ? ' required' : '').">".htmlspecialchars($objvalue)."</textarea>";
|
$content .= "<textarea class=\"form-control\" id=\"".$fieldname."_".$attrdef->getId()."\" class=\"input-xxlarge\" name=\"".$fieldname."[".$attrdef->getId()."]\"".((!$norequire && $attrdef->getMinValues() > 0) ? ' required="required"' : '').">".htmlspecialchars($objvalue)."</textarea>";
|
||||||
} else {
|
} else {
|
||||||
$content .= "<input type=\"text\" class=\"form-control\" id=\"".$fieldname."_".$attrdef->getId()."\" name=\"".$fieldname."[".$attrdef->getId()."]\" value=\"".htmlspecialchars($objvalue)."\"".((!$norequire && $attrdef->getMinValues() > 0) ? ' required' : '').($attrdef->getType() == SeedDMS_Core_AttributeDefinition::type_int ? ' data-rule-digits="true"' : '')." />";
|
$content .= "<input type=\"text\" class=\"form-control\" id=\"".$fieldname."_".$attrdef->getId()."\" name=\"".$fieldname."[".$attrdef->getId()."]\" value=\"".htmlspecialchars($objvalue)."\"".((!$norequire && $attrdef->getMinValues() > 0) ? ' required="required"' : '').($attrdef->getType() == SeedDMS_Core_AttributeDefinition::type_int ? ' data-rule-digits="true"' : '')." />";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|