* Fix priv of workflow menus.
This commit is contained in:
+64
-16
@@ -22,6 +22,70 @@ class group extends control
|
||||
parent::__construct($moduleName, $methodName);
|
||||
$this->loadModel('company')->setMenu();
|
||||
$this->loadModel('user');
|
||||
$this->appendResourcePackages();
|
||||
}
|
||||
|
||||
/**
|
||||
* Append packages in resource.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function appendResourcePackages()
|
||||
{
|
||||
$allPrivs = array();
|
||||
foreach($this->config->group->package as $packageCode => $package)
|
||||
{
|
||||
foreach($package->privs as $privCode => $priv)
|
||||
{
|
||||
$allPrivs[$privCode] = $privCode;
|
||||
}
|
||||
}
|
||||
|
||||
/* Privs in resource but not in package. */
|
||||
foreach($this->lang->resource as $module => $methodList)
|
||||
{
|
||||
foreach($methodList as $method => $methodLang)
|
||||
{
|
||||
if(isset($allPrivs[$module . '-' . $method])) continue;
|
||||
|
||||
/* Create subset. */
|
||||
if(!isset($this->config->group->subset->$module))
|
||||
{
|
||||
$this->config->group->subset->$module = new stdclass();
|
||||
$this->config->group->subset->$module->order = 10000;
|
||||
$this->config->group->subset->$module->nav = $module;
|
||||
}
|
||||
|
||||
/* Create subset. */
|
||||
$methodPackage = array('create' => 'manage', 'batchcreate' => 'manage', 'browse' => 'browse', 'view' => 'browse', 'delete' => 'delete', 'batchdelete' => 'delete', 'edit' => 'manage', 'batchedit' => 'manage');
|
||||
$packageName = isset($methodPackage[$method]) ? $methodPackage[$method] : 'other';
|
||||
$packageCode = $module . $packageName;
|
||||
if(!isset($this->config->group->package->$packageCode))
|
||||
{
|
||||
$this->config->group->package->$packageCode = new stdclass();
|
||||
$this->config->group->package->$packageCode->order = 5;
|
||||
$this->config->group->package->$packageCode->subset = $module;
|
||||
$this->config->group->package->$packageCode->privs = array();
|
||||
$this->lang->group->package->$packageCode = $this->lang->group->package->$packageName;
|
||||
}
|
||||
|
||||
/* Browse action in workflow. */
|
||||
if(isset($this->lang->$module->menus) && $method == 'browse')
|
||||
{
|
||||
$this->config->group->package->$packageCode->privs["$module-$method"] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,or', 'order' => 5, 'depend' => array(), 'recommend' => array());
|
||||
|
||||
foreach($this->lang->$module->menus as $flowMethod => $flowName)
|
||||
{
|
||||
$this->config->group->package->$packageCode->privs["$module-$flowMethod"] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,or', 'order' => 5, 'depend' => array("$module-$method"), 'recommend' => array());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->config->group->package->$packageCode->privs["$module-$method"] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,or', 'order' => 5, 'depend' => array(), 'recommend' => array());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -322,22 +386,6 @@ class group extends control
|
||||
}
|
||||
}
|
||||
|
||||
/* Subsets in resource but not in package. */
|
||||
$this->group->sortResource();
|
||||
foreach($this->lang->resource as $module => $methodList)
|
||||
{
|
||||
foreach($methodList as $method => $methodLang)
|
||||
{
|
||||
if(isset($privs["$module-$method"])) continue;
|
||||
|
||||
if(!isset($subsets[$module]))
|
||||
{
|
||||
$subsets[$module] = isset($this->lang->$module) && isset($this->lang->$module->common) ? $this->lang->$module->common : $module;
|
||||
$packages[$module] = array('other' => $this->lang->group->other);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->company->common . $this->lang->colon . $this->lang->group->managePriv;
|
||||
$this->view->position[] = $this->lang->group->managePriv;
|
||||
|
||||
|
||||
@@ -204,6 +204,10 @@ $lang->group->versions['1_1'] = 'ZenTao1.1';
|
||||
$lang->group->versions['1_0_1'] = 'ZenTao1.0.1';
|
||||
|
||||
$lang->group->package = new stdclass();
|
||||
$lang->group->package->browse = 'Browse';
|
||||
$lang->group->package->manage = 'Manage';
|
||||
$lang->group->package->delete = 'Delete';
|
||||
$lang->group->package->other = 'Other';
|
||||
$lang->group->package->browseTodo = 'Browse Todo';
|
||||
$lang->group->package->manageTodo = 'Manage Todo';
|
||||
$lang->group->package->deleteTodo = 'Delete Todo';
|
||||
@@ -583,6 +587,5 @@ $lang->group->package->deleteArtifactrepo = 'Delete Artifact Repo';
|
||||
$lang->group->package->browseApplication = 'Application List';
|
||||
$lang->group->package->mangeApplication = 'Manage Application';
|
||||
$lang->group->package->trainPracticeLib = 'Practice Library';
|
||||
$lang->group->package->other = 'Other';
|
||||
|
||||
include (dirname(__FILE__) . '/resource.php');
|
||||
|
||||
@@ -204,6 +204,10 @@ $lang->group->versions['1_1'] = '禅道1.1';
|
||||
$lang->group->versions['1_0_1'] = '禅道1.0.1';
|
||||
|
||||
$lang->group->package = new stdclass();
|
||||
$lang->group->package->browse = '浏览';
|
||||
$lang->group->package->manage = '创建维护';
|
||||
$lang->group->package->delete = '删除';
|
||||
$lang->group->package->other = '其他';
|
||||
$lang->group->package->browseTodo = '浏览待办';
|
||||
$lang->group->package->manageTodo = '创建维护待办';
|
||||
$lang->group->package->deleteTodo = '删除待办';
|
||||
@@ -583,6 +587,5 @@ $lang->group->package->deleteArtifactrepo = '删除制品库';
|
||||
$lang->group->package->browseApplication = '浏览应用';
|
||||
$lang->group->package->mangeApplication = '管理应用';
|
||||
$lang->group->package->trainPracticeLib = '实践库';
|
||||
$lang->group->package->other = '其他';
|
||||
|
||||
include (dirname(__FILE__) . '/resource.php');
|
||||
|
||||
+33
-49
@@ -1782,38 +1782,29 @@ class groupModel extends model
|
||||
/* If version is selected, only show privs before the version. */
|
||||
if(!empty($version) and strpos($versionPrivs, ",$privCode,") === false) continue;
|
||||
|
||||
/* Remove privs unused in the edition. */
|
||||
if(!isset($this->lang->resource->$moduleName) || !isset($this->lang->resource->$moduleName->$methodName)) continue;
|
||||
$methodLang = $this->lang->resource->$moduleName->$methodName;
|
||||
if(!isset($this->lang->$moduleName->$methodLang))
|
||||
/* Add methods in workflow menus, remove privs unused in the edition. */
|
||||
if(isset($this->lang->$moduleName->menus) && isset($this->lang->$moduleName->menus[$methodName]))
|
||||
{
|
||||
$this->app->loadLang($moduleName);
|
||||
if($moduleName == 'requirement') $this->app->loadLang('story');
|
||||
$privName = $this->lang->group->package->browse . '(' . $this->lang->$moduleName->menus[$methodName] . ')';
|
||||
}
|
||||
$priv = (object)array('subset' => $packageData->subset, 'package' => $packageCode, 'module' => $moduleName, 'method' => $methodName, 'selected' => false, 'name' => $this->lang->$moduleName->$methodLang);
|
||||
else
|
||||
{
|
||||
if(!isset($this->lang->resource->$moduleName) || !isset($this->lang->resource->$moduleName->$methodName)) continue;
|
||||
$methodLang = $this->lang->resource->$moduleName->$methodName;
|
||||
if(!isset($this->lang->$moduleName->$methodLang))
|
||||
{
|
||||
$this->app->loadLang($moduleName);
|
||||
if($moduleName == 'requirement') $this->app->loadLang('story');
|
||||
}
|
||||
$privName = $this->lang->$moduleName->$methodLang;
|
||||
}
|
||||
|
||||
$priv = (object)array('subset' => $packageData->subset, 'package' => $packageCode, 'module' => $moduleName, 'method' => $methodName, 'selected' => false, 'name' => $privName);
|
||||
|
||||
$privList[$privCode] = $priv;
|
||||
}
|
||||
}
|
||||
|
||||
if($version) return $privList;
|
||||
|
||||
/* Privs in resource but not in package. */
|
||||
foreach($this->lang->resource as $module => $methodList)
|
||||
{
|
||||
foreach($methodList as $method => $methodLang)
|
||||
{
|
||||
if(isset($allPrivs["$module-$method"])) continue;
|
||||
|
||||
if(!$this->checkNavModule($nav, $module)) continue;
|
||||
|
||||
if(!isset($this->lang->$module->$methodLang)) $this->app->loadLang($module);
|
||||
$priv = (object)array('subset' => $module, 'package' => 'other', 'module' => $module, 'method' => $method, 'selected' => false, 'name' => $this->lang->$module->$methodLang);
|
||||
|
||||
$privList["$module-$method"] = $priv;
|
||||
}
|
||||
}
|
||||
|
||||
return $privList;
|
||||
}
|
||||
|
||||
@@ -2468,7 +2459,7 @@ class groupModel extends model
|
||||
if ($relatedPriv1['order'] > $relatedPriv2['order'])
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
elseif ($relatedPriv1['order'] < $relatedPriv2['order'])
|
||||
{
|
||||
return -1;
|
||||
@@ -2533,7 +2524,21 @@ class groupModel extends model
|
||||
list($moduleName, $methodName) = explode('-', $privCode);
|
||||
|
||||
/* Remove privs unused in the edition. */
|
||||
if(!isset($this->lang->resource->$moduleName) || !isset($this->lang->resource->$moduleName->$methodName)) continue;
|
||||
if(isset($this->lang->$moduleName->menus) && isset($this->lang->$moduleName->menus[$methodName]))
|
||||
{
|
||||
$privName = $this->lang->$moduleName->menus[$methodName];
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!isset($this->lang->resource->$moduleName) || !isset($this->lang->resource->$moduleName->$methodName)) continue;
|
||||
$methodLang = $this->lang->resource->$moduleName->$methodName;
|
||||
if(!isset($this->lang->$moduleName->$methodLang))
|
||||
{
|
||||
$this->app->loadLang($moduleName);
|
||||
if($moduleName == 'requirement') $this->app->loadLang('story');
|
||||
}
|
||||
$privName = $this->lang->$moduleName->$methodLang;
|
||||
}
|
||||
|
||||
$allPrivs[$privCode] = $privCode;
|
||||
|
||||
@@ -2542,28 +2547,7 @@ class groupModel extends model
|
||||
|
||||
if($selectedPackages && strpos($selectedPackages, ",$packageCode,") === false) continue;
|
||||
|
||||
$methodLang = $this->lang->resource->$moduleName->$methodName;
|
||||
if(!isset($this->lang->$moduleName->$methodLang)) $this->app->loadLang($moduleName);
|
||||
|
||||
$privs[$privCode] = $this->lang->$moduleName->$methodLang;
|
||||
}
|
||||
}
|
||||
|
||||
if(empty($selectedPackages) || strpos($selectedPackages, ',other,') !== false)
|
||||
{
|
||||
/* Privs in resource but not in package. */
|
||||
$this->sortResource();
|
||||
foreach($this->lang->resource as $module => $methodList)
|
||||
{
|
||||
foreach($methodList as $method => $methodLang)
|
||||
{
|
||||
if($module != $selectedSubset) continue;
|
||||
|
||||
if(isset($allPrivs["$module-$method"])) continue;
|
||||
|
||||
if(!isset($this->lang->$module->$methodLang)) $this->app->loadLang($module);
|
||||
$privs["$module-$method"] = $this->lang->$module->$methodLang;
|
||||
}
|
||||
$privs[$privCode] = $privName;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user