Merge branch 'master' of https://github.com/easysoft/zentaopms
This commit is contained in:
+93
-87
@@ -10,24 +10,24 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->arrow = ' <i class="icon-angle-right"></i> ';
|
||||
$lang->colon = '::';
|
||||
$lang->colon = '-';
|
||||
$lang->comma = ',';
|
||||
$lang->dot = '.';
|
||||
$lang->at = ' on ';
|
||||
$lang->downArrow = '↓';
|
||||
$lang->null = 'null';
|
||||
$lang->null = 'Null';
|
||||
$lang->ellipsis = '…';
|
||||
$lang->percent = '%';
|
||||
$lang->dash = '-';
|
||||
|
||||
$lang->zentaoPMS = 'ZenTao';
|
||||
$lang->welcome = "%s PMS";
|
||||
$lang->welcome = "%s ALM";
|
||||
$lang->logout = 'Logout';
|
||||
$lang->login = 'Login';
|
||||
$lang->help = 'Help';
|
||||
$lang->aboutZenTao = 'ZenTao';
|
||||
$lang->aboutZenTao = 'About';
|
||||
$lang->profile = 'Profile';
|
||||
$lang->changePassword = 'Password';
|
||||
$lang->changePassword = 'Change Password';
|
||||
$lang->runInfo = "<div class='row'><div class='u-1 a-center' id='debugbar'>Time %s MS, Memory %s KB, Query %s. </div></div>";
|
||||
$lang->agreement = "I have read and agreed to the terms and conditions of <a href='http://zpl.pub/page/zplv12.html' target='_blank'> Z PUBLIC LICENSE 1.2 </a>. <span class='text-danger'>Without authorization, I should not remove, hide or cover any logos/links of ZenTao.</span>";
|
||||
$lang->designedByAIUX = "<a href='http://aiuxstudio.com/' class='link-aiux' target='_blank'>Designed by <strong>AIUX</strong></a>";
|
||||
@@ -54,62 +54,62 @@ $lang->day = 'Day';
|
||||
$lang->customConfig = 'Custom Config';
|
||||
$lang->public = 'Public';
|
||||
$lang->trunk = 'Trunk';
|
||||
$lang->sort = 'Sort';
|
||||
$lang->sort = 'Order';
|
||||
$lang->required = 'Required';
|
||||
$lang->noData = 'No data.';
|
||||
|
||||
$lang->actions = 'Action';
|
||||
$lang->restore = 'Restore';
|
||||
$lang->restore = 'Reset';
|
||||
$lang->comment = 'Note';
|
||||
$lang->history = 'History';
|
||||
$lang->attatch = 'File';
|
||||
$lang->reverse = 'Reverse';
|
||||
$lang->attatch = 'Files';
|
||||
$lang->reverse = 'Inverse';
|
||||
$lang->switchDisplay = 'Toggle';
|
||||
$lang->expand = 'Expand';
|
||||
$lang->collapse = 'Collapse';
|
||||
$lang->saveSuccess = 'Saved';
|
||||
$lang->fail = 'Fail';
|
||||
$lang->addFiles = 'Add';
|
||||
$lang->addFiles = 'Added Files';
|
||||
$lang->files = 'Files ';
|
||||
$lang->pasteText = 'Paste';
|
||||
$lang->uploadImages = 'Upload';
|
||||
$lang->timeout = 'Timeout. Pease check your connection, or try it again!';
|
||||
$lang->repairTable = 'Database table might be damaged. Execute phpmyadmin or myisamchk to fix it.';
|
||||
$lang->duplicate = '%s has the same title as a file title existed.';
|
||||
$lang->pasteText = 'Paste Multi-Items';
|
||||
$lang->uploadImages = 'Upload Multi-Images';
|
||||
$lang->timeout = 'Timeout. Check your newtwork connections, or try it again!';
|
||||
$lang->repairTable = 'Database table might be damaged. Run phpmyadmin or myisamchk to fix it.';
|
||||
$lang->duplicate = '%s has the same title as a file existed.';
|
||||
$lang->ipLimited = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8' /></head><body>Sorry, your current IP is restricted. PLease contact your Administer to grant your permissions.</body></html>";
|
||||
$lang->unfold = '+';
|
||||
$lang->fold = '-';
|
||||
$lang->homepage = 'Set Home';
|
||||
$lang->noviceTutorial = 'Rookie Tutorial';
|
||||
$lang->noviceTutorial = 'ZenTao Tutorial';
|
||||
$lang->changeLog = 'Change Log';
|
||||
$lang->manual = 'Manual';
|
||||
$lang->manual = 'User Manual';
|
||||
$lang->manualUrl = 'https://www.zentao.pm/book/zentaomanual/zentao-installation-11.html';
|
||||
$lang->customMenu = 'Custom Menu';
|
||||
$lang->customField = 'Custom Field';
|
||||
$lang->lineNumber = 'Line No.';
|
||||
$lang->tutorialConfirm = 'You are using ZenTao tutorial. Do you want to quit right now?';
|
||||
$lang->youCould = 'You could ';
|
||||
|
||||
$lang->preShortcutKey = '[Shortcut:←]';
|
||||
$lang->nextShortcutKey = '[Shortcut:→]';
|
||||
$lang->backShortcutKey = '[Shortcut:Alt+↑]';
|
||||
|
||||
$lang->select = 'Select';
|
||||
$lang->selectAll = 'All';
|
||||
$lang->selectReverse = 'Reverse';
|
||||
$lang->selectAll = 'Select All';
|
||||
$lang->selectReverse = 'Select Inverse';
|
||||
$lang->loading = 'Loading...';
|
||||
$lang->notFound = 'Not found!';
|
||||
$lang->notPage = 'Sorry, the features you are visiting are in development!';
|
||||
$lang->showAll = '[[Show All]]';
|
||||
|
||||
$lang->future = 'Pending';
|
||||
$lang->future = 'Waiting';
|
||||
$lang->year = 'Year';
|
||||
$lang->workingHour = 'Hour';
|
||||
$lang->workingHour = 'Hours';
|
||||
|
||||
$lang->idAB = 'ID';
|
||||
$lang->priAB = 'P';
|
||||
$lang->statusAB = 'Status';
|
||||
$lang->openedByAB = 'Creator';
|
||||
$lang->assignedToAB = 'Assignee';
|
||||
$lang->openedByAB = 'CreatedBy';
|
||||
$lang->assignedToAB = 'AssignedTo';
|
||||
$lang->typeAB = 'Type';
|
||||
|
||||
$lang->common = new stdclass();
|
||||
@@ -139,8 +139,8 @@ $lang->searchObjects['user'] = 'User';
|
||||
$lang->searchObjects['build'] = 'Build';
|
||||
$lang->searchObjects['release'] = 'Release';
|
||||
$lang->searchObjects['productplan'] = $lang->productCommon . 'Plan';
|
||||
$lang->searchObjects['testtask'] = 'Test';
|
||||
$lang->searchObjects['doc'] = 'Doc';
|
||||
$lang->searchObjects['testtask'] = 'Request';
|
||||
$lang->searchObjects['doc'] = 'Document';
|
||||
$lang->searchObjects['testsuite'] = 'Case Library';
|
||||
$lang->searchObjects['testreport'] = 'Test Report';
|
||||
$lang->searchTips = 'ID (ctrl+g)';
|
||||
@@ -155,15 +155,15 @@ $lang->exportFileTypeList['csv'] = 'csv';
|
||||
$lang->exportFileTypeList['xml'] = 'xml';
|
||||
$lang->exportFileTypeList['html'] = 'html';
|
||||
|
||||
$lang->exportTypeList['all'] = 'All';
|
||||
$lang->exportTypeList['selected'] = 'Selected';
|
||||
$lang->exportTypeList['all'] = 'All Data';
|
||||
$lang->exportTypeList['selected'] = 'Selected Data';
|
||||
|
||||
/* Language. */
|
||||
$lang->lang = 'Language';
|
||||
|
||||
/* Theme style. */
|
||||
$lang->theme = 'Theme';
|
||||
$lang->themes['default'] = 'ZenTao Blue (default)';
|
||||
$lang->themes['default'] = 'Default';
|
||||
$lang->themes['green'] = 'Green';
|
||||
$lang->themes['red'] = 'Red';
|
||||
$lang->themes['purple'] = 'Purple';
|
||||
@@ -183,17 +183,17 @@ $lang->my = new stdclass();
|
||||
$lang->my->menu = new stdclass();
|
||||
|
||||
$lang->my->menu->index = 'Home|my|index';
|
||||
$lang->my->menu->calendar = array('link' => 'Calendar|my|calendar|', 'subModule' => 'todo', 'alias' => 'todo');
|
||||
$lang->my->menu->calendar = array('link' => 'Schedule|my|calendar|', 'subModule' => 'todo', 'alias' => 'todo');
|
||||
$lang->my->menu->task = array('link' => 'Task|my|task|', 'subModule' => 'task');
|
||||
$lang->my->menu->bug = array('link' => 'Bug|my|bug|', 'subModule' => 'bug');
|
||||
$lang->my->menu->testtask = array('link' => 'Test Task|my|testtask|', 'subModule' => 'testcase,testtask', 'alias' => 'testcase');
|
||||
$lang->my->menu->testtask = array('link' => 'Request|my|testtask|', 'subModule' => 'testcase,testtask', 'alias' => 'testcase');
|
||||
$lang->my->menu->story = array('link' => 'Story|my|story|', 'subModule' => 'story');
|
||||
$lang->my->menu->myProject = "{$lang->projectCommon}|my|project|";
|
||||
$lang->my->menu->dynamic = 'Dynamic|my|dynamic|';
|
||||
$lang->my->menu->dynamic = 'Dynamics|my|dynamic|';
|
||||
$lang->my->menu->profile = array('link' => 'Profile|my|profile', 'alias' => 'editprofile');
|
||||
$lang->my->menu->changePassword = 'Password|my|changepassword';
|
||||
$lang->my->menu->manageContacts = 'Contact|my|managecontacts';
|
||||
$lang->my->menu->score = 'Point|my|score';
|
||||
$lang->my->menu->score = array('link' => 'Points|my|score', 'subModule' => 'score');
|
||||
|
||||
$lang->my->dividerMenu = ',task,myProject,profile,';
|
||||
|
||||
@@ -212,7 +212,7 @@ $lang->product->menu->plan = array('link' => 'Plan|productplan|browse|produc
|
||||
$lang->product->menu->release = array('link' => 'Release|release|browse|productID=%s', 'subModule' => 'release');
|
||||
$lang->product->menu->roadmap = 'Roadmap|product|roadmap|productID=%s';
|
||||
$lang->product->menu->project = "{$lang->projectCommon}|product|project|status=all&productID=%s";
|
||||
$lang->product->menu->dynamic = 'Dynamic|product|dynamic|productID=%s';
|
||||
$lang->product->menu->dynamic = 'Dynamics|product|dynamic|productID=%s';
|
||||
$lang->product->menu->doc = array('link' => 'Doc|doc|objectLibs|type=product&objectID=%s&from=product', 'subModule' => 'doc');
|
||||
$lang->product->menu->branch = '@branch@|branch|manage|productID=%s';
|
||||
$lang->product->menu->module = 'Module|tree|browse|productID=%s&view=story';
|
||||
@@ -239,9 +239,9 @@ $lang->project->menu->kanban = array('link' => 'Kanban|project|kanban|projectI
|
||||
$lang->project->menu->burn = array('link' => 'Burndown|project|burn|projectID=%s');
|
||||
$lang->project->menu->list = array('link' => 'More|project|grouptask|projectID=%s', 'alias' => 'grouptask,tree', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->project->menu->story = array('link' => 'Story|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory,storykanban');
|
||||
$lang->project->menu->qa = array('link' => 'Test|project|bug|projectID=%s', 'subModule' => 'bug,build,testtask', 'alias' => 'build,testtask', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->project->menu->qa = array('link' => 'Request|project|bug|projectID=%s', 'subModule' => 'bug,build,testtask', 'alias' => 'build,testtask', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->project->menu->doc = array('link' => 'Doc|doc|objectLibs|type=project&objectID=%s&from=project', 'subModule' => 'doc');
|
||||
$lang->project->menu->action = array('link' => 'Dynamic|project|dynamic|projectID=%s', 'subModule' => 'dynamic', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->project->menu->action = array('link' => 'Dynamics|project|dynamic|projectID=%s', 'subModule' => 'dynamic', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->project->menu->product = $lang->productCommon . '|project|manageproducts|projectID=%s';
|
||||
$lang->project->menu->team = array('link' => 'Team|project|team|projectID=%s', 'alias' => 'managemembers');
|
||||
$lang->project->menu->view = array('link' => 'Overview|project|view|projectID=%s', 'alias' => 'edit,start,suspend,putoff,close');
|
||||
@@ -254,7 +254,7 @@ $lang->project->subMenu->list->tree = 'Tree View|project|tree|projectID=%s'
|
||||
$lang->project->subMenu->qa = new stdclass();
|
||||
$lang->project->subMenu->qa->bug = 'Bug|project|bug|projectID=%s';
|
||||
$lang->project->subMenu->qa->build = array('link' => 'Build|project|build|projectID=%s', 'subModule' => 'build');
|
||||
$lang->project->subMenu->qa->testtask = array('link' => 'Test Task|project|testtask|projectID=%s', 'subModule' => 'testreport,testtask');
|
||||
$lang->project->subMenu->qa->testtask = array('link' => 'Request|project|testtask|projectID=%s', 'subModule' => 'testreport,testtask');
|
||||
|
||||
$lang->project->dividerMenu = ',story,team,product,';
|
||||
|
||||
@@ -262,7 +262,6 @@ $lang->task = new stdclass();
|
||||
$lang->build = new stdclass();
|
||||
$lang->task->menu = $lang->project->menu;
|
||||
$lang->build->menu = $lang->project->menu;
|
||||
$lang->build->menu->qa = array('link' => 'Build|project|build|projectID=%s', 'subModule' => 'bug,build,testtask', 'alias' => 'build,testtask', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
/* QA menu settings. */
|
||||
$lang->qa = new stdclass();
|
||||
@@ -270,7 +269,7 @@ $lang->qa->menu = new stdclass();
|
||||
|
||||
$lang->qa->menu->bug = array('link' => 'Bug|bug|browse|productID=%s');
|
||||
$lang->qa->menu->testcase = array('link' => 'Case|testcase|browse|productID=%s');
|
||||
$lang->qa->menu->testtask = array('link' => 'Test|testtask|browse|productID=%s');
|
||||
$lang->qa->menu->testtask = array('link' => 'Request|testtask|browse|productID=%s');
|
||||
$lang->qa->menu->testsuite = array('link' => 'Suite|testsuite|browse|productID=%s');
|
||||
$lang->qa->menu->report = array('link' => 'Report|testreport|browse|productID=%s');
|
||||
$lang->qa->menu->caselib = array('link' => 'Case Library|testsuite|library');
|
||||
@@ -280,7 +279,7 @@ $lang->bug->menu = new stdclass();
|
||||
|
||||
$lang->bug->menu->bug = array('link' => 'Bug|bug|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,resolve,close,activate,report,batchedit,batchactivate,confirmbug,assignto', 'subModule' => 'tree');
|
||||
$lang->bug->menu->testcase = array('link' => 'Case|testcase|browse|productID=%s');
|
||||
$lang->bug->menu->testtask = array('link' => 'Test|testtask|browse|productID=%s');
|
||||
$lang->bug->menu->testtask = array('link' => 'Request|testtask|browse|productID=%s');
|
||||
$lang->bug->menu->testsuite = array('link' => 'Suite|testsuite|browse|productID=%s');
|
||||
$lang->bug->menu->report = array('link' => 'Report|testreport|browse|productID=%s');
|
||||
$lang->bug->menu->caselib = array('link' => 'Case Library|testsuite|library');
|
||||
@@ -289,7 +288,7 @@ $lang->testcase = new stdclass();
|
||||
$lang->testcase->menu = new stdclass();
|
||||
$lang->testcase->menu->bug = array('link' => 'Bug|bug|browse|productID=%s');
|
||||
$lang->testcase->menu->testcase = array('link' => 'Case|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,batchedit,showimport,groupcase,importfromlib', 'subModule' => 'tree');
|
||||
$lang->testcase->menu->testtask = array('link' => 'Test|testtask|browse|productID=%s');
|
||||
$lang->testcase->menu->testtask = array('link' => 'Request|testtask|browse|productID=%s');
|
||||
$lang->testcase->menu->testsuite = array('link' => 'Suite|testsuite|browse|productID=%s');
|
||||
$lang->testcase->menu->report = array('link' => 'Report|testreport|browse|productID=%s');
|
||||
$lang->testcase->menu->caselib = array('link' => 'Case Library|testsuite|library');
|
||||
@@ -298,7 +297,7 @@ $lang->testtask = new stdclass();
|
||||
$lang->testtask->menu = new stdclass();
|
||||
$lang->testtask->menu->bug = array('link' => 'Bug|bug|browse|productID=%s');
|
||||
$lang->testtask->menu->testcase = array('link' => 'Case|testcase|browse|productID=%s');
|
||||
$lang->testtask->menu->testtask = array('link' => 'Test|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases,start,close,batchrun,groupcase,report');
|
||||
$lang->testtask->menu->testtask = array('link' => 'Request|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases,start,close,batchrun,groupcase,report');
|
||||
$lang->testtask->menu->testsuite = array('link' => 'Suite|testsuite|browse|productID=%s');
|
||||
$lang->testtask->menu->report = array('link' => 'Report|testreport|browse|productID=%s');
|
||||
$lang->testtask->menu->caselib = array('link' => 'Case Library|testsuite|library');
|
||||
@@ -307,7 +306,7 @@ $lang->testsuite = new stdclass();
|
||||
$lang->testsuite->menu = new stdclass();
|
||||
$lang->testsuite->menu->bug = array('link' => 'Bug|bug|browse|productID=%s');
|
||||
$lang->testsuite->menu->testcase = array('link' => 'Case|testcase|browse|productID=%s');
|
||||
$lang->testsuite->menu->testtask = array('link' => 'Test Task|testtask|browse|productID=%s');
|
||||
$lang->testsuite->menu->testtask = array('link' => 'Request|testtask|browse|productID=%s');
|
||||
$lang->testsuite->menu->testsuite = array('link' => 'Suite|testsuite|browse|productID=%s', 'alias' => 'view,create,edit,linkcase');
|
||||
$lang->testsuite->menu->report = array('link' => 'Report|testreport|browse|productID=%s');
|
||||
$lang->testsuite->menu->caselib = array('link' => 'Case Library|testsuite|library');
|
||||
@@ -316,16 +315,16 @@ $lang->testreport = new stdclass();
|
||||
$lang->testreport->menu = new stdclass();
|
||||
$lang->testreport->menu->bug = array('link' => 'Bug|bug|browse|productID=%s');
|
||||
$lang->testreport->menu->testcase = array('link' => 'Case|testcase|browse|productID=%s');
|
||||
$lang->testreport->menu->testtask = array('link' => 'Test|testtask|browse|productID=%s');
|
||||
$lang->testreport->menu->testtask = array('link' => 'Request|testtask|browse|productID=%s');
|
||||
$lang->testreport->menu->testsuite = array('link' => 'Suite|testsuite|browse|productID=%s');
|
||||
$lang->testreport->menu->report = array('link' => 'Report|testreport|browse|productID=%s', 'alias' => 'view,create,edit');
|
||||
$lang->testreport->menu->caselib = array('link' => 'Library|testsuite|library');
|
||||
$lang->testreport->menu->caselib = array('link' => 'Case Library|testsuite|library');
|
||||
|
||||
$lang->caselib = new stdclass();
|
||||
$lang->caselib->menu = new stdclass();
|
||||
$lang->caselib->menu->bug = array('link' => 'Bug|bug|browse|');
|
||||
$lang->caselib->menu->testcase = array('link' => 'Case|testcase|browse|');
|
||||
$lang->caselib->menu->testtask = array('link' => 'Test|testtask|browse|');
|
||||
$lang->caselib->menu->testtask = array('link' => 'Request|testtask|browse|');
|
||||
$lang->caselib->menu->testsuite = array('link' => 'Suite|testsuite|browse|');
|
||||
$lang->caselib->menu->report = array('link' => 'Report|testreport|browse|');
|
||||
$lang->caselib->menu->caselib = array('link' => 'Case Library|testsuite|library', 'alias' => 'createlib,createcase,libview,edit,batchcreatecase,showimport', 'subModule' => 'tree,testcase');
|
||||
@@ -344,11 +343,11 @@ $lang->report->menu = new stdclass();
|
||||
|
||||
$lang->report->menu->product = array('link' => $lang->productCommon . '|report|productsummary');
|
||||
$lang->report->menu->prj = array('link' => $lang->projectCommon . '|report|projectdeviation');
|
||||
$lang->report->menu->test = array('link' => 'Test|report|bugcreate', 'alias' => 'bugassign');
|
||||
$lang->report->menu->test = array('link' => 'Request|report|bugcreate', 'alias' => 'bugassign');
|
||||
$lang->report->menu->staff = array('link' => 'Company|report|workload');
|
||||
|
||||
$lang->report->notice = new stdclass();
|
||||
$lang->report->notice->help = 'Note: Report is generated on search results. Please search the list before you generate a report.';
|
||||
$lang->report->notice->help = 'Note: The data of a report is based on the data in the List. Click the tab, e.g. All, then click Report to generate a report.';
|
||||
|
||||
/* Company menu settings. */
|
||||
$lang->company = new stdclass();
|
||||
@@ -356,7 +355,7 @@ $lang->company->menu = new stdclass();
|
||||
$lang->company->menu->browseUser = array('link' => 'User|company|browse', 'subModule' => 'user');
|
||||
$lang->company->menu->dept = array('link' => 'Department|dept|browse', 'subModule' => 'dept');
|
||||
$lang->company->menu->browseGroup = array('link' => 'Privilege|group|browse', 'subModule' => 'group');
|
||||
$lang->company->menu->dynamic = 'Dynamic|company|dynamic|';
|
||||
$lang->company->menu->dynamic = 'Dynamics|company|dynamic|';
|
||||
$lang->company->menu->view = array('link' => 'Company|company|view');
|
||||
|
||||
$lang->dept = new stdclass();
|
||||
@@ -371,11 +370,12 @@ $lang->user->menu = $lang->company->menu;
|
||||
$lang->admin = new stdclass();
|
||||
$lang->admin->menu = new stdclass();
|
||||
$lang->admin->menu->index = array('link' => 'Home|admin|index', 'alias' => 'register,certifytemail,certifyztmobile,ztcompany');
|
||||
$lang->admin->menu->message = array('link' => 'Message|message|index', 'subModule' => 'message,mail,webhook');
|
||||
$lang->admin->menu->message = array('link' => 'Notification|message|index', 'subModule' => 'message,mail,webhook');
|
||||
$lang->admin->menu->custom = array('link' => 'Custom|custom|set', 'subModule' => 'custom');
|
||||
$lang->admin->menu->sso = array('link' => 'Integrate|admin|sso');
|
||||
$lang->admin->menu->sso = array('link' => 'Integration|admin|sso');
|
||||
|
||||
$lang->admin->menu->dev = array('link' => 'Develop|dev|api', 'alias' => 'db', 'subModule' => 'dev,editor,entry');
|
||||
$lang->admin->menu->translate = array('link' => 'Translate|translate|index', 'subModule' => 'translate');
|
||||
$lang->admin->menu->data = array('link' => 'Data|backup|index', 'subModule' => 'backup,action');
|
||||
$lang->admin->menu->safe = array('link' => 'Security|admin|safe', 'alias' => 'checkweak');
|
||||
$lang->admin->menu->system = array('link' => 'System|cron|index', 'subModule' => 'cron');
|
||||
@@ -384,7 +384,7 @@ $lang->admin->subMenu = new stdclass();
|
||||
$lang->admin->subMenu->message = new stdclass();
|
||||
$lang->admin->subMenu->message->mail = array('link' => 'Mail|mail|index', 'subModule' => 'mail');
|
||||
$lang->admin->subMenu->message->webhook = array('link' => 'Webhook|webhook|browse', 'subModule' => 'webhook');
|
||||
$lang->admin->subMenu->message->setting = array('link' => 'Setting|message|setting', 'subModule' => 'message');
|
||||
$lang->admin->subMenu->message->setting = array('link' => 'Settings|message|setting', 'subModule' => 'message');
|
||||
|
||||
$lang->admin->subMenu->sso = new stdclass();
|
||||
$lang->admin->subMenu->sso->ranzhi = 'Zdoo|admin|sso';
|
||||
@@ -393,7 +393,7 @@ $lang->admin->subMenu->dev = new stdclass();
|
||||
$lang->admin->subMenu->dev->api = array('link' => 'API|dev|api');
|
||||
$lang->admin->subMenu->dev->db = array('link' => 'Database|dev|db');
|
||||
$lang->admin->subMenu->dev->editor = array('link' => 'Editor|editor|index', 'subModule' => 'editor');
|
||||
$lang->admin->subMenu->dev->entry = array('link' => 'Entry|entry|browse', 'subModule' => 'entry');
|
||||
$lang->admin->subMenu->dev->entry = array('link' => 'Application|entry|browse', 'subModule' => 'entry');
|
||||
|
||||
$lang->admin->subMenu->data = new stdclass();
|
||||
$lang->admin->subMenu->data->backup = array('link' => 'Backup|backup|index', 'subModule' => 'backup');
|
||||
@@ -409,7 +409,6 @@ $lang->action = new stdclass();
|
||||
$lang->backup = new stdclass();
|
||||
$lang->extension = new stdclass();
|
||||
$lang->custom = new stdclass();
|
||||
$lang->editor = new stdclass();
|
||||
$lang->mail = new stdclass();
|
||||
$lang->cron = new stdclass();
|
||||
$lang->dev = new stdclass();
|
||||
@@ -417,6 +416,8 @@ $lang->entry = new stdclass();
|
||||
$lang->webhook = new stdclass();
|
||||
$lang->message = new stdclass();
|
||||
$lang->search = new stdclass();
|
||||
$lang->translate = new stdclass();
|
||||
$lang->editor = new stdclass();
|
||||
|
||||
$lang->convert->menu = $lang->admin->menu;
|
||||
$lang->upgrade->menu = $lang->admin->menu;
|
||||
@@ -425,12 +426,13 @@ $lang->backup->menu = $lang->admin->menu;
|
||||
$lang->cron->menu = $lang->admin->menu;
|
||||
$lang->extension->menu = $lang->admin->menu;
|
||||
$lang->custom->menu = $lang->admin->menu;
|
||||
$lang->editor->menu = $lang->admin->menu;
|
||||
$lang->mail->menu = $lang->admin->menu;
|
||||
$lang->dev->menu = $lang->admin->menu;
|
||||
$lang->entry->menu = $lang->admin->menu;
|
||||
$lang->webhook->menu = $lang->admin->menu;
|
||||
$lang->message->menu = $lang->admin->menu;
|
||||
$lang->translate->menu = $lang->admin->menu;
|
||||
$lang->editor->menu = $lang->admin->menu;
|
||||
|
||||
/* Menu group. */
|
||||
$lang->menugroup = new stdclass();
|
||||
@@ -446,10 +448,13 @@ $lang->menugroup->user = 'company';
|
||||
$lang->menugroup->group = 'company';
|
||||
$lang->menugroup->bug = 'qa';
|
||||
$lang->menugroup->testcase = 'qa';
|
||||
$lang->menugroup->case = 'qa';
|
||||
$lang->menugroup->caselib = 'qa';
|
||||
$lang->menugroup->testtask = 'qa';
|
||||
$lang->menugroup->testsuite = 'qa';
|
||||
$lang->menugroup->caselib = 'qa';
|
||||
$lang->menugroup->testreport = 'qa';
|
||||
$lang->menugroup->doclib = 'doc';
|
||||
$lang->menugroup->people = 'company';
|
||||
$lang->menugroup->dept = 'company';
|
||||
$lang->menugroup->todo = 'my';
|
||||
@@ -459,36 +464,37 @@ $lang->menugroup->backup = 'admin';
|
||||
$lang->menugroup->cron = 'admin';
|
||||
$lang->menugroup->extension = 'admin';
|
||||
$lang->menugroup->custom = 'admin';
|
||||
$lang->menugroup->editor = 'admin';
|
||||
$lang->menugroup->mail = 'admin';
|
||||
$lang->menugroup->dev = 'admin';
|
||||
$lang->menugroup->entry = 'admin';
|
||||
$lang->menugroup->webhook = 'admin';
|
||||
$lang->menugroup->message = 'admin';
|
||||
$lang->menugroup->translate = 'admin';
|
||||
$lang->menugroup->editor = 'admin';
|
||||
|
||||
/* Error info. */
|
||||
$lang->error = new stdclass();
|
||||
$lang->error->companyNotFound = "The domain %s cannot be found!";
|
||||
$lang->error->length = array("『%s』length error. It should be『%s』", "『%s』length should be <=『%s』and >『%s』.");
|
||||
$lang->error->reg = "『%s』format error. It should be『%s』.";
|
||||
$lang->error->unique = "『%s』『%s』exists. Go to Admin->Recycle to restore it, if you are sure it is deleted.";
|
||||
$lang->error->unique = "『%s』『%s』exists. Go to Admin->Recycle Bin to restore it, if you are sure it is deleted.";
|
||||
$lang->error->gt = "『%s』should be >『%s』.";
|
||||
$lang->error->ge = "『%s』should be >=『%s』.";
|
||||
$lang->error->notempty = "『%s』should not be blank.";
|
||||
$lang->error->empty = "『%s』should be null.";
|
||||
$lang->error->equal = "『%s』has to be『%s』.";
|
||||
$lang->error->int = array("『%s』should be numbers", "『%s』should be 『%s-%s』.");
|
||||
$lang->error->float = "『%s』should have numbers, decimals.";
|
||||
$lang->error->float = "『%s』should have numbers, or decimals.";
|
||||
$lang->error->email = "『%s』should be valid Email.";
|
||||
$lang->error->URL = "『%s』should be url.";
|
||||
$lang->error->date = "『%s』should be valid date.";
|
||||
$lang->error->datetime = "『%s』should be valid date.";
|
||||
$lang->error->code = "『%s』should be letters or numbers.";
|
||||
$lang->error->account = "『%s』should be letters or numbers of three or more.";
|
||||
$lang->error->account = "『%s』should be >= 3 letters or numbers.";
|
||||
$lang->error->passwordsame = "Passwords should be consistent.";
|
||||
$lang->error->passwordrule = "Password should abide by rules. It should be at least 6 characters.";
|
||||
$lang->error->passwordrule = "Password should conform to rules. It should be >= 6 characters.";
|
||||
$lang->error->accessDenied = 'Access is denied.';
|
||||
$lang->error->pasteImg = 'Image is not allowed to paste in your browser!';
|
||||
$lang->error->pasteImg = 'Images are not allowed to be pasted in your browser!';
|
||||
$lang->error->noData = 'No data.';
|
||||
$lang->error->editedByOther = 'This record might have been changed. Please refresh and try to edit again!';
|
||||
$lang->error->tutorialData = 'No data can be imported in tutorial mode. Please quit tutorial first!';
|
||||
@@ -496,7 +502,7 @@ $lang->error->tutorialData = 'No data can be imported in tutorial mode. Pleas
|
||||
/* Page info. */
|
||||
$lang->pager = new stdclass();
|
||||
$lang->pager->noRecord = "No records.";
|
||||
$lang->pager->digest = " <strong>%s</strong> in total. %s <strong>%s/%s</strong> ";
|
||||
$lang->pager->digest = "Total: <strong>%s</strong>. %s <strong>%s/%s</strong> ";
|
||||
$lang->pager->recPerPage = " <strong>%s</strong> per page";
|
||||
$lang->pager->first = "<i class='icon-step-backward' title='Home'></i>";
|
||||
$lang->pager->pre = "<i class='icon-play icon-flip-horizontal' title='Previous Page'></i>";
|
||||
@@ -509,26 +515,26 @@ $lang->pager->summery = "<strong>%s-%s</strong> of <strong>%s</strong>.";
|
||||
|
||||
$lang->proVersion = "<a href='https://www.zentao.pm/book/zentaopromanual/free-open-source-project-management-software-zentaopro-127.html' target='_blank' id='proLink' class='text-important'>ZenTao Pro <i class='text-danger icon-pro-version'></i></a> ";
|
||||
$lang->downNotify = "Download Desktop Notification";
|
||||
$lang->downloadClient = "Download Desktop Client";
|
||||
$lang->downloadClient = "Download ZenTao Desktop";
|
||||
$lang->clientHelp = "Client Help";
|
||||
$lang->clientHelpLink = "https://www.zentao.pm/book/zentaomanual/scrum-tool-open-source-client-214.html";
|
||||
$lang->clientHelpLink = "https://www.zentao.pm/book/zentaomanual/";
|
||||
$lang->website = "https://www.zentao.pm";
|
||||
|
||||
$lang->suhosinInfo = "Warning! Data is reaching the limit. Please change <font color=red>sohusin.post.max_vars</font> and <font color=red>sohusin.request.max_vars</font> (set larger %s value) in php.ini, then save and restart Apache or php-fpm, or some data will not be saved.";
|
||||
$lang->maxVarsInfo = "Warning! Data is reaching the limit. Please change <font color=red>max_input_vars</font> (set larger %s value) in php.ini, then save and restart Apache or php-fpm, or some data will not be saved.";
|
||||
$lang->pasteTextInfo = "Paste text here. Each line will be the title of each record. ";
|
||||
$lang->noticeImport = "Imported data contains something that has already existed in system. Please confirm your actions.";
|
||||
$lang->importConfirm = "Confirm";
|
||||
$lang->pasteTextInfo = "Paste the text of items here. Each item will be the title of a story. ";
|
||||
$lang->noticeImport = "Imported data contains data that has already existed in system. Please confirm you actions on the date.";
|
||||
$lang->importConfirm = "Import";
|
||||
$lang->importAndCover = "Override";
|
||||
$lang->importAndInsert = "Insert";
|
||||
|
||||
|
||||
$lang->noResultsMatch = "No results match found!";
|
||||
$lang->searchMore = "More results:";
|
||||
$lang->chooseUsersToMail = "Choose users to be notified";
|
||||
$lang->browserNotice = 'Your browser might not display the best effect. Use Chrome, Firefox, IE9+, Opera or Safari.';
|
||||
$lang->noticePasteImg = "Paste images here";
|
||||
$lang->pasteImgFail = "Pasting image failed. Try again later.";
|
||||
$lang->chooseUsersToMail = "Choose users that will be notified.";
|
||||
$lang->browserNotice = 'The browser you currently use might not get the best browsing results. It is recommended that you use Chrome, Firefox, IE9+, Opera or Safari.';
|
||||
$lang->noticePasteImg = "You can paste images into the editor.";
|
||||
$lang->pasteImgFail = "Failed to paste images. Try again later.";
|
||||
$lang->pasteImgUploading = "Uploading...";
|
||||
|
||||
/* Time formats settings. */
|
||||
@@ -558,7 +564,7 @@ $lang->datepicker->dpText->TEXT_TODAY = 'Today';
|
||||
$lang->datepicker->dpText->TEXT_NEXT_YEAR = 'Next Year';
|
||||
$lang->datepicker->dpText->TEXT_NEXT_MONTH = 'Next Month';
|
||||
$lang->datepicker->dpText->TEXT_CLOSE = 'Close';
|
||||
$lang->datepicker->dpText->TEXT_DATE = 'Choose Time';
|
||||
$lang->datepicker->dpText->TEXT_DATE = 'Choose Tab';
|
||||
$lang->datepicker->dpText->TEXT_CHOOSE_DATE = 'Choose Date';
|
||||
|
||||
$lang->datepicker->dayNames = array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
|
||||
@@ -737,10 +743,10 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
|
||||
/* Add bug, testcase and testtask module. */
|
||||
$lang->menu->bug = 'Bug|bug|index';
|
||||
$lang->menu->testcase = 'Test Case|testcase|index';
|
||||
$lang->menu->testsuite = 'Test Suite|testsuite|index';
|
||||
$lang->menu->testtask = 'Test|testtask|index';
|
||||
$lang->menu->caselib = 'Case Lib|testsuite|library';
|
||||
$lang->menu->testcase = 'Case|testcase|index';
|
||||
$lang->menu->testsuite = 'Suite|testsuite|index';
|
||||
$lang->menu->testtask = 'Request|testtask|index';
|
||||
$lang->menu->caselib = 'Case Library|testsuite|library';
|
||||
|
||||
$lang->menuOrder[6] = 'bug';
|
||||
$lang->menuOrder[7] = 'testcase';
|
||||
@@ -752,22 +758,22 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
/* Adjust sub menu of bug module. */
|
||||
$lang->bug->menu = new stdclass();
|
||||
$lang->bug->menu->all = 'All|bug|browse|productID=%s&branch=%s&browseType=all¶m=%s';
|
||||
$lang->bug->menu->unclosed = 'Open|bug|browse|productID=%s&branch=%s&browseType=unclosed¶m=%s';
|
||||
$lang->bug->menu->openedbyme = 'CreateByMe|bug|browse|productID=%s&branch=%s&browseType=openedbyme¶m=%s';
|
||||
$lang->bug->menu->assigntome = 'AssignToMe|bug|browse|productID=%s&branch=%s&browseType=assigntome¶m=%s';
|
||||
$lang->bug->menu->resolvedbyme = 'ResolveByMe|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme¶m=%s';
|
||||
$lang->bug->menu->unclosed = 'Unclosed|bug|browse|productID=%s&branch=%s&browseType=unclosed¶m=%s';
|
||||
$lang->bug->menu->openedbyme = 'ReportedByMe|bug|browse|productID=%s&branch=%s&browseType=openedbyme¶m=%s';
|
||||
$lang->bug->menu->assigntome = 'AssignedToMe|bug|browse|productID=%s&branch=%s&browseType=assigntome¶m=%s';
|
||||
$lang->bug->menu->resolvedbyme = 'ResolvedByMe|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme¶m=%s';
|
||||
$lang->bug->menu->toclosed = 'ToBeClosed|bug|browse|productID=%s&branch=%s&browseType=toclosed¶m=%s';
|
||||
$lang->bug->menu->unresolved = 'Unresolved|bug|browse|productID=%s&branch=%s&browseType=unresolved¶m=%s';
|
||||
$lang->bug->menu->unresolved = 'Active|bug|browse|productID=%s&branch=%s&browseType=unresolved¶m=%s';
|
||||
$lang->bug->menu->more = array('link' => 'More|bug|browse|productID=%s&branch=%s&browseType=unconfirmed¶m=%s', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
$lang->bug->subMenu = new stdclass();
|
||||
$lang->bug->subMenu->more = new stdclass();
|
||||
$lang->bug->subMenu->more->unconfirmed = 'Unconfirmed|bug|browse|productID=%s&branch=%s&browseType=unconfirmed¶m=%s';
|
||||
$lang->bug->subMenu->more->assigntonull = 'Unassigned|bug|browse|productID=%s&branch=%s&browseType=assigntonull¶m=%s';
|
||||
$lang->bug->subMenu->more->longlifebugs = 'Pending|bug|browse|productID=%s&branch=%s&browseType=longlifebugs¶m=%s';
|
||||
$lang->bug->subMenu->more->longlifebugs = 'Stalled|bug|browse|productID=%s&branch=%s&browseType=longlifebugs¶m=%s';
|
||||
$lang->bug->subMenu->more->postponedbugs = 'Postponed|bug|browse|productID=%s&branch=%s&browseType=postponedbugs¶m=%s';
|
||||
$lang->bug->subMenu->more->overduebugs = 'Overdue|bug|browse|productID=%s&branch=%s&browseType=overduebugs¶m=%s';
|
||||
$lang->bug->subMenu->more->needconfirm = 'ToConfirm|bug|browse|productID=%s&branch=%s&browseType=needconfirm¶m=%s';
|
||||
$lang->bug->subMenu->more->needconfirm = 'ToBeConfirmed|bug|browse|productID=%s&branch=%s&browseType=needconfirm¶m=%s';
|
||||
|
||||
$lang->bug->menuOrder[5] = 'product';
|
||||
$lang->bug->menuOrder[10] = 'all';
|
||||
@@ -787,8 +793,8 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
/* Adjust sub menu of testcase. */
|
||||
$lang->testcase->menu = new stdclass();
|
||||
$lang->testcase->menu->all = 'All|testcase|browse|productID=%s&branch=%s&browseType=all';
|
||||
$lang->testcase->menu->wait = 'Wait|testcase|browse|productID=%s&branch=%s&browseType=wait';
|
||||
$lang->testcase->menu->bysuite = array('link' => 'Test Suite|testsuite|create|productID=%s', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->testcase->menu->wait = 'Waiting|testcase|browse|productID=%s&branch=%s&browseType=wait';
|
||||
$lang->testcase->menu->bysuite = array('link' => 'Suite|testsuite|create|productID=%s', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
$lang->testcase->subMenu = new stdclass();
|
||||
$lang->testcase->subMenu->bysuite = new stdclass();
|
||||
@@ -807,7 +813,7 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
/* Adjust sub menu of testtask. */
|
||||
$lang->testtask->menu = new stdclass();
|
||||
$lang->testtask->menu->totalStatus = 'All|testtask|browse|productID=%s&branch=%s&type=%s,totalStatus';
|
||||
$lang->testtask->menu->wait = 'Wait|testtask|browse|productID=%s&branch=%s&type=%s,wait';
|
||||
$lang->testtask->menu->wait = 'Waiting|testtask|browse|productID=%s&branch=%s&type=%s,wait';
|
||||
$lang->testtask->menu->doing = 'Doing|testtask|browse|productID=%s&branch=%s&type=%s,doing';
|
||||
$lang->testtask->menu->blocked = 'Blocked|testtask|browse|productID=%s&branch=%s&type=%s,blocked';
|
||||
$lang->testtask->menu->done = 'Done|testtask|browse|productID=%s&branch=%s&type=%s,done';
|
||||
@@ -828,7 +834,7 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
/* Adjust sub menu of caselib module. */
|
||||
$lang->caselib->menu = new stdclass();
|
||||
$lang->caselib->menu->all = 'All|testsuite|library|libID=%s&browseType=all';
|
||||
$lang->caselib->menu->wait = 'Wait|testsuite|library|libID=%s&browseType=wait';
|
||||
$lang->caselib->menu->wait = 'Waiting|testsuite|library|libID=%s&browseType=wait';
|
||||
$lang->caselib->menu->view = 'View|testsuite|libview|libID=%s';
|
||||
|
||||
$lang->caselib->menuOrder[5] = 'lib';
|
||||
|
||||
@@ -108,9 +108,10 @@ $lang->admin->menuOrder[15] = 'custom';
|
||||
$lang->admin->menuOrder[20] = 'sso';
|
||||
$lang->admin->menuOrder[25] = 'extension';
|
||||
$lang->admin->menuOrder[30] = 'dev';
|
||||
$lang->admin->menuOrder[35] = 'data';
|
||||
$lang->admin->menuOrder[40] = 'safe';
|
||||
$lang->admin->menuOrder[45] = 'system';
|
||||
$lang->admin->menuOrder[35] = 'translate';
|
||||
$lang->admin->menuOrder[40] = 'data';
|
||||
$lang->admin->menuOrder[45] = 'safe';
|
||||
$lang->admin->menuOrder[50] = 'system';
|
||||
|
||||
$lang->admin->subMenuOrder = new stdclass();
|
||||
$lang->admin->subMenuOrder->message[5] = 'mail';
|
||||
@@ -133,8 +134,8 @@ $lang->backup->menuOrder = $lang->admin->menuOrder;
|
||||
$lang->cron->menuOrder = $lang->admin->menuOrder;
|
||||
$lang->extension->menuOrder = $lang->admin->menuOrder;
|
||||
$lang->custom->menuOrder = $lang->admin->menuOrder;
|
||||
$lang->editor->menuOrder = $lang->admin->menuOrder;
|
||||
$lang->mail->menuOrder = $lang->admin->menuOrder;
|
||||
$lang->dev->menuOrder = $lang->admin->menuOrder;
|
||||
$lang->entry->menuOrder = $lang->admin->menuOrder;
|
||||
$lang->webhook->menuOrder = $lang->admin->menuOrder;
|
||||
$lang->editor->menuOrder = $lang->admin->menuOrder;
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->arrow = ' <i class="icon-angle-right"></i> ';
|
||||
$lang->colon = '::';
|
||||
$lang->colon = '-';
|
||||
$lang->comma = ',';
|
||||
$lang->dot = '。';
|
||||
$lang->at = ' 于 ';
|
||||
@@ -88,7 +88,6 @@ $lang->customMenu = '自定义导航';
|
||||
$lang->customField = '自定义表单项';
|
||||
$lang->lineNumber = '行号';
|
||||
$lang->tutorialConfirm = '检测到你尚未退出新手教程模式,是否现在退出?';
|
||||
$lang->youCould = '您现在可以 ';
|
||||
|
||||
$lang->preShortcutKey = '[快捷键:←]';
|
||||
$lang->nextShortcutKey = '[快捷键:→]';
|
||||
@@ -99,6 +98,7 @@ $lang->selectAll = '全选';
|
||||
$lang->selectReverse = '反选';
|
||||
$lang->loading = '稍候...';
|
||||
$lang->notFound = '抱歉,您访问的对象并不存在!';
|
||||
$lang->notPage = '抱歉,您访问的功能正在开发中!';
|
||||
$lang->showAll = '[[全部显示]]';
|
||||
|
||||
$lang->future = '未来';
|
||||
@@ -193,7 +193,7 @@ $lang->my->menu->dynamic = '动态|my|dynamic|';
|
||||
$lang->my->menu->profile = array('link' => '档案|my|profile', 'alias' => 'editprofile');
|
||||
$lang->my->menu->changePassword = '密码|my|changepassword';
|
||||
$lang->my->menu->manageContacts = '联系人|my|managecontacts';
|
||||
$lang->my->menu->score = '积分|my|score';
|
||||
$lang->my->menu->score = array('link' => '积分|my|score', 'subModule' => 'score');
|
||||
|
||||
$lang->my->dividerMenu = ',task,myProject,profile,';
|
||||
|
||||
@@ -262,7 +262,6 @@ $lang->task = new stdclass();
|
||||
$lang->build = new stdclass();
|
||||
$lang->task->menu = $lang->project->menu;
|
||||
$lang->build->menu = $lang->project->menu;
|
||||
$lang->build->menu->qa = array('link' => '版本|project|build|projectID=%s', 'subModule' => 'bug,build,testtask', 'alias' => 'build,testtask', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
/* QA视图菜单设置。*/
|
||||
$lang->qa = new stdclass();
|
||||
@@ -348,7 +347,7 @@ $lang->report->menu->test = array('link' => '测试|report|bugcreate', 'alias
|
||||
$lang->report->menu->staff = array('link' => '组织|report|workload');
|
||||
|
||||
$lang->report->notice = new stdclass();
|
||||
$lang->report->notice->help = '注:统计报表的数据,来源于列表页面的检索结果,生成统计报表前请先在列表页面进行检索。';
|
||||
$lang->report->notice->help = '注:统计报表的数据来源于列表页面的检索结果,生成统计报表前请先在列表页面进行检索。';
|
||||
|
||||
/* 组织结构视图菜单设置。*/
|
||||
$lang->company = new stdclass();
|
||||
@@ -376,6 +375,7 @@ $lang->admin->menu->custom = array('link' => '自定义|custom|set', 'subModu
|
||||
$lang->admin->menu->sso = array('link' => '集成|admin|sso');
|
||||
$lang->admin->menu->extension = array('link' => '插件|extension|browse', 'subModule' => 'extension');
|
||||
$lang->admin->menu->dev = array('link' => '二次开发|dev|api', 'alias' => 'db', 'subModule' => 'dev,editor,entry');
|
||||
$lang->admin->menu->translate = array('link' => '翻译|translate|index', 'subModule' => 'translate');
|
||||
$lang->admin->menu->data = array('link' => '数据|backup|index', 'subModule' => 'backup,action');
|
||||
$lang->admin->menu->safe = array('link' => '安全|admin|safe', 'alias' => 'checkweak');
|
||||
$lang->admin->menu->system = array('link' => '系统|cron|index', 'subModule' => 'cron');
|
||||
@@ -409,7 +409,6 @@ $lang->action = new stdclass();
|
||||
$lang->backup = new stdclass();
|
||||
$lang->extension = new stdclass();
|
||||
$lang->custom = new stdclass();
|
||||
$lang->editor = new stdclass();
|
||||
$lang->mail = new stdclass();
|
||||
$lang->cron = new stdclass();
|
||||
$lang->dev = new stdclass();
|
||||
@@ -417,6 +416,8 @@ $lang->entry = new stdclass();
|
||||
$lang->webhook = new stdclass();
|
||||
$lang->message = new stdclass();
|
||||
$lang->search = new stdclass();
|
||||
$lang->translate = new stdclass();
|
||||
$lang->editor = new stdclass();
|
||||
|
||||
$lang->convert->menu = $lang->admin->menu;
|
||||
$lang->upgrade->menu = $lang->admin->menu;
|
||||
@@ -425,12 +426,13 @@ $lang->backup->menu = $lang->admin->menu;
|
||||
$lang->cron->menu = $lang->admin->menu;
|
||||
$lang->extension->menu = $lang->admin->menu;
|
||||
$lang->custom->menu = $lang->admin->menu;
|
||||
$lang->editor->menu = $lang->admin->menu;
|
||||
$lang->mail->menu = $lang->admin->menu;
|
||||
$lang->dev->menu = $lang->admin->menu;
|
||||
$lang->entry->menu = $lang->admin->menu;
|
||||
$lang->webhook->menu = $lang->admin->menu;
|
||||
$lang->message->menu = $lang->admin->menu;
|
||||
$lang->translate->menu = $lang->admin->menu;
|
||||
$lang->editor->menu = $lang->admin->menu;
|
||||
|
||||
/* 菜单分组。*/
|
||||
$lang->menugroup = new stdclass();
|
||||
@@ -446,10 +448,13 @@ $lang->menugroup->user = 'company';
|
||||
$lang->menugroup->group = 'company';
|
||||
$lang->menugroup->bug = 'qa';
|
||||
$lang->menugroup->testcase = 'qa';
|
||||
$lang->menugroup->case = 'qa';
|
||||
$lang->menugroup->caselib = 'qa';
|
||||
$lang->menugroup->testtask = 'qa';
|
||||
$lang->menugroup->testsuite = 'qa';
|
||||
$lang->menugroup->caselib = 'qa';
|
||||
$lang->menugroup->testreport = 'qa';
|
||||
$lang->menugroup->doclib = 'doc';
|
||||
$lang->menugroup->people = 'company';
|
||||
$lang->menugroup->dept = 'company';
|
||||
$lang->menugroup->todo = 'my';
|
||||
@@ -459,12 +464,13 @@ $lang->menugroup->backup = 'admin';
|
||||
$lang->menugroup->cron = 'admin';
|
||||
$lang->menugroup->extension = 'admin';
|
||||
$lang->menugroup->custom = 'admin';
|
||||
$lang->menugroup->editor = 'admin';
|
||||
$lang->menugroup->mail = 'admin';
|
||||
$lang->menugroup->dev = 'admin';
|
||||
$lang->menugroup->entry = 'admin';
|
||||
$lang->menugroup->webhook = 'admin';
|
||||
$lang->menugroup->message = 'admin';
|
||||
$lang->menugroup->translate = 'admin';
|
||||
$lang->menugroup->editor = 'admin';
|
||||
|
||||
/* 错误提示信息。*/
|
||||
$lang->error = new stdclass();
|
||||
@@ -859,6 +865,7 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
/* Adjust menu group. */
|
||||
$lang->menugroup->bug = 'bug';
|
||||
$lang->menugroup->testcase = 'testcase';
|
||||
$lang->menugroup->case = 'testcase';
|
||||
$lang->menugroup->testtask = 'testtask';
|
||||
$lang->menugroup->testsuite = 'testsuite';
|
||||
$lang->menugroup->testreport = 'testtask';
|
||||
|
||||
@@ -88,7 +88,6 @@ $lang->customMenu = '自定義導航';
|
||||
$lang->customField = '自定義表單項';
|
||||
$lang->lineNumber = '行號';
|
||||
$lang->tutorialConfirm = '檢測到你尚未退出新手教程模式,是否現在退出?';
|
||||
$lang->youCould = '您現在可以 ';
|
||||
|
||||
$lang->preShortcutKey = '[快捷鍵:←]';
|
||||
$lang->nextShortcutKey = '[快捷鍵:→]';
|
||||
@@ -99,6 +98,7 @@ $lang->selectAll = '全選';
|
||||
$lang->selectReverse = '反選';
|
||||
$lang->loading = '稍候...';
|
||||
$lang->notFound = '抱歉,您訪問的對象並不存在!';
|
||||
$lang->notPage = '抱歉,您訪問的功能正在開發中!';
|
||||
$lang->showAll = '[[全部顯示]]';
|
||||
|
||||
$lang->future = '未來';
|
||||
@@ -446,10 +446,13 @@ $lang->menugroup->user = 'company';
|
||||
$lang->menugroup->group = 'company';
|
||||
$lang->menugroup->bug = 'qa';
|
||||
$lang->menugroup->testcase = 'qa';
|
||||
$lang->menugroup->case = 'qa';
|
||||
$lang->menugroup->caselib = 'qa';
|
||||
$lang->menugroup->testtask = 'qa';
|
||||
$lang->menugroup->testsuite = 'qa';
|
||||
$lang->menugroup->caselib = 'qa';
|
||||
$lang->menugroup->testreport = 'qa';
|
||||
$lang->menugroup->doclib = 'doc';
|
||||
$lang->menugroup->people = 'company';
|
||||
$lang->menugroup->dept = 'company';
|
||||
$lang->menugroup->todo = 'my';
|
||||
@@ -858,6 +861,7 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
/* Adjust menu group. */
|
||||
$lang->menugroup->bug = 'bug';
|
||||
$lang->menugroup->testcase = 'testcase';
|
||||
$lang->menugroup->case = 'testcase';
|
||||
$lang->menugroup->testtask = 'testtask';
|
||||
$lang->menugroup->testsuite = 'testsuite';
|
||||
$lang->menugroup->testreport = 'testtask';
|
||||
|
||||
+38
-14
@@ -254,12 +254,12 @@ class commonModel extends model
|
||||
if(!$isGuest)
|
||||
{
|
||||
echo '<li class="user-profile-item">';
|
||||
echo "<a href='". helper::createLink('my', 'profile', '', '', true) . "' class='iframe" . (!empty($app->user->role) && isset($lang->user->roleList[$app->user->role]) ? '' : ' no-role') . "' data-width='600'>";
|
||||
echo "<a href='". helper::createLink('my', 'profile') . (!empty($app->user->role) && isset($lang->user->roleList[$app->user->role]) ? '' : ' no-role') . "'>";
|
||||
echo "<div class='avatar avatar bg-secondary avatar-circle'>" . strtoupper($app->user->account{0}) . "</div>\n";
|
||||
echo '<div class="user-profile-name">' . (empty($app->user->realname) ? $app->user->account : $app->user->realname) . '</div>';
|
||||
if(isset($lang->user->roleList[$app->user->role])) echo '<div class="user-profile-role">' . $lang->user->roleList[$app->user->role] . '</div>';
|
||||
echo '</a></li><li class="divider"></li>';
|
||||
echo '<li>' . html::a(helper::createLink('my', 'profile', '', '', true), $lang->profile, '', "class='iframe' data-width='600'") . '</li>';
|
||||
echo '<li>' . html::a(helper::createLink('my', 'profile'), $lang->profile) . '</li>';
|
||||
echo '<li>' . html::a(helper::createLink('my', 'changepassword', '', '', true), $lang->changePassword, '', "class='iframe' data-width='500'") . '</li>';
|
||||
|
||||
echo "<li class='divider'></li>";
|
||||
@@ -320,7 +320,7 @@ class commonModel extends model
|
||||
echo '<li>' . html::a($lang->manualUrl, $lang->manual, '_blank', "class='open-help-tab'") . '</li>';
|
||||
echo '<li>' . html::a(helper::createLink('misc', 'changeLog'), $lang->changeLog, '', "class='iframe' data-width='800' data-headerless='true' data-backdrop='true' data-keyboard='true'") . '</li>';
|
||||
echo "</ul></li>\n";
|
||||
echo '<li>' . html::a(helper::createLink('misc', 'about'), $lang->aboutZenTao, '', "class='about iframe' data-width='900' data-headerless='true' data-backdrop='true' data-keyboard='true' data-class='modal-about'") . '</li>';
|
||||
echo '<li>' . html::a(helper::createLink('misc', 'about'), $lang->aboutZenTao, '', "class='about iframe' data-width='950' data-headerless='true' data-backdrop='true' data-keyboard='true' data-class='modal-about'") . '</li>';
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -381,11 +381,14 @@ class commonModel extends model
|
||||
$link['method'] = $subMenuMethod;
|
||||
$link['vars'] = $subMenuParams;
|
||||
|
||||
$menu = new stdclass();
|
||||
$menu->name = $subMenuKey;
|
||||
$menu->link = $link;
|
||||
$menu->text = $subMenuName;
|
||||
$menu->hidden = false;
|
||||
$subMenuItem = isset($items->$subMenuKey) ? $items->$subMenuKey : array();
|
||||
$menu = new stdclass();
|
||||
$menu->name = $subMenuKey;
|
||||
$menu->link = $link;
|
||||
$menu->text = $subMenuName;
|
||||
$menu->subModule = isset($subMenuItem['subModule']) ? $subMenuItem['subModule'] : '';
|
||||
$menu->alias = isset($subMenuItem['alias']) ? $subMenuItem['alias'] : '';
|
||||
$menu->hidden = false;
|
||||
$subMenu[$subMenuKey] = $menu;
|
||||
}
|
||||
|
||||
@@ -1645,7 +1648,6 @@ EOD;
|
||||
public function checkEntry()
|
||||
{
|
||||
$this->loadModel('entry');
|
||||
|
||||
if($this->session->valid_entry)
|
||||
{
|
||||
if(!$this->session->entry_code) $this->response('SESSION_CODE_MISSING');
|
||||
@@ -1661,7 +1663,7 @@ EOD;
|
||||
if(!$entry->key) $this->response('EMPTY_KEY');
|
||||
if(empty($entry->account)) $this->response('ACCOUNT_UNBOUND');
|
||||
if(!$this->checkIP($entry->ip)) $this->response('IP_DENIED');
|
||||
if(!$this->checkEntryToken($entry->key)) $this->response('INVALID_TOKEN');
|
||||
if(!$this->checkEntryToken($entry)) $this->response('INVALID_TOKEN');
|
||||
|
||||
$this->loadModel('user');
|
||||
$user = $this->dao->findByAccount($entry->account)->from(TABLE_USER)->fetch();
|
||||
@@ -1676,6 +1678,14 @@ EOD;
|
||||
$this->session->set('VALID_ENTRY', md5(md5($this->get->code) . $this->server->remote_addr));
|
||||
$this->loadModel('entry')->saveLog($entry->id, $this->server->request_uri);
|
||||
|
||||
/* Add for task #5384. */
|
||||
if($_SERVER['REQUEST_METHOD'] == 'POST' and empty($_POST))
|
||||
{
|
||||
$post = file_get_contents("php://input");
|
||||
if(!empty($post)) $post = json_decode($post, true);
|
||||
if(!empty($post)) $_POST = $post;
|
||||
}
|
||||
|
||||
unset($_GET['code']);
|
||||
unset($_GET['token']);
|
||||
}
|
||||
@@ -1683,16 +1693,30 @@ EOD;
|
||||
/**
|
||||
* Check token of an entry.
|
||||
*
|
||||
* @param string $key
|
||||
* @param object $entry
|
||||
* @access public
|
||||
* @return void
|
||||
* @return bool
|
||||
*/
|
||||
public function checkEntryToken($key)
|
||||
public function checkEntryToken($entry)
|
||||
{
|
||||
parse_str($this->server->query_String, $queryString);
|
||||
unset($queryString['token']);
|
||||
|
||||
/* Change for task #5384. */
|
||||
if(isset($queryString['time']))
|
||||
{
|
||||
$result = $this->get->token == md5($entry->code . $entry->key . $queryString['time']);
|
||||
if($result)
|
||||
{
|
||||
if($queryString['time'] <= $entry->calledTime) $this->response('CALLED_TIME');
|
||||
$this->loadModel('entry')->updateTime($entry->code, $queryString['time']);
|
||||
unset($_GET['time']);
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
$queryString = http_build_query($queryString);
|
||||
return $this->get->token == md5(md5($queryString) . $key);
|
||||
return $this->get->token == md5(md5($queryString) . $entry->key);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
$(function()
|
||||
{
|
||||
<?php if(!empty($setShowModule)):?>
|
||||
$('#sidebar .cell .text-center:last').append("<a href='#showModuleModal' data-toggle='modal' class='text-secondary small'><?php echo $lang->datatable->showModule?></a><hr class='space-sm' />");
|
||||
$('#sidebar .cell .text-center:last').append("<a href='#showModuleModal' data-toggle='modal' class='text-secondary small'><?php echo $lang->datatable->showModuleAB?></a><hr class='space-sm' />");
|
||||
<?php endif;?>
|
||||
|
||||
var $btnToolbar = $('#main .table-header .btn-toolbar:first');
|
||||
|
||||
@@ -26,7 +26,7 @@ $uid = uniqid('');
|
||||
var simpleTools =
|
||||
[ 'formatblock', 'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', 'italic','underline', '|',
|
||||
'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist', 'insertunorderedlist', '|',
|
||||
'emoticons', 'image', 'code', 'link', '|', 'removeformat','undo', 'redo', 'fullscreen', 'source', 'about'];
|
||||
'emoticons', 'image', 'code', 'link', 'table', '|', 'removeformat','undo', 'redo', 'fullscreen', 'source', 'about'];
|
||||
var fullTools =
|
||||
[ 'formatblock', 'fontname', 'fontsize', 'lineheight', '|', 'forecolor', 'hilitecolor', '|', 'bold', 'italic','underline', 'strikethrough', '|',
|
||||
'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', '|',
|
||||
@@ -37,7 +37,6 @@ $uid = uniqid('');
|
||||
'table', 'code', '|', 'pagebreak', 'anchor', '|',
|
||||
'fullscreen', 'source', 'preview', 'about'];
|
||||
var editorToolsMap = {fullTools: fullTools, simpleTools: simpleTools, bugTools: bugTools};
|
||||
var imageLoadingEle = '<div class="image-loading-ele small" style="padding: 5px; background: #FFF3E0; width: 300px; border-radius: 2px; border: 1px solid #FF9800; color: #ff5d5d; margin: 10px 0;"><i class="icon icon-spin icon-spinner-indicator muted"></i> <?php echo $this->lang->pasteImgUploading?></div>';
|
||||
|
||||
// Kindeditor default options
|
||||
var editorDefaults =
|
||||
@@ -51,18 +50,22 @@ $uid = uniqid('');
|
||||
uploadJson: createLink('file', 'ajaxUpload', 'uid=' + kuid),
|
||||
allowFileManager: true,
|
||||
langType: '<?php echo $editorLang?>',
|
||||
cssData: 'html,body {background: none}.article-content, .article-content table td, .article-content table th {line-height: 1.3846153846; font-size: 13px;}.article-content .table-auto {width: auto!important; max-width: 100%;}',
|
||||
placeholderStyle: {fontSize: '13px', color: '#888'},
|
||||
pasteImage: {postUrl: createLink('file', 'ajaxPasteImage', 'uid=' + kuid), placeholder: true},
|
||||
syncAfterBlur: true,
|
||||
spellcheck: false
|
||||
};
|
||||
|
||||
window.editor = {};
|
||||
var nextFormControl = 'input:not([type="hidden"]), textarea:not(.ke-edit-textarea), button[type="submit"], select';
|
||||
|
||||
// Init kindeditor
|
||||
var setKindeditor = function(element, options)
|
||||
{
|
||||
var $editor = $(element);
|
||||
var pasted = false;
|
||||
options = $.extend({}, editorDefaults, $editor.data(), options);
|
||||
var editorID = $editor.attr('id');
|
||||
options = $.extend({}, editorDefaults, $editor.data(), options);
|
||||
if(editorID === undefined)
|
||||
{
|
||||
editorID = 'kindeditor-' + $.zui.uuid();
|
||||
@@ -70,7 +73,6 @@ $uid = uniqid('');
|
||||
}
|
||||
|
||||
var editorTool = editorToolsMap[options.tools || editor.tools] || simpleTools;
|
||||
var placeholder = $editor.attr('placeholder') || options.placeholder || '';
|
||||
|
||||
/* Remove fullscreen in modal. */
|
||||
if(config.onlybody == 'yes')
|
||||
@@ -86,164 +88,7 @@ $uid = uniqid('');
|
||||
$.extend(options,
|
||||
{
|
||||
items: editorTool,
|
||||
afterChange: function(){$editor.change().hide();},
|
||||
afterCreate : function()
|
||||
{
|
||||
var frame = this.edit;
|
||||
var doc = this.edit.doc;
|
||||
var cmd = this.edit.cmd;
|
||||
pasted = true;
|
||||
if(!K.WEBKIT && !K.GECKO)
|
||||
{
|
||||
var pasted = false;
|
||||
$(doc.body).bind('paste', function(ev)
|
||||
{
|
||||
pasted = true;
|
||||
return true;
|
||||
});
|
||||
setTimeout(function()
|
||||
{
|
||||
$(doc.body).bind('keyup', function(ev)
|
||||
{
|
||||
if(pasted)
|
||||
{
|
||||
pasted = false;
|
||||
return true;
|
||||
}
|
||||
if(ev.keyCode == 86 && ev.ctrlKey) alert('<?php echo $this->lang->error->pasteImg;?>');
|
||||
})
|
||||
}, 10);
|
||||
}
|
||||
if(pasted && placeholder.indexOf('<?php echo $this->lang->noticePasteImg?>') < 0)
|
||||
{
|
||||
if(placeholder) placeholder += '<br />';
|
||||
placeholder += ' <?php echo $this->lang->noticePasteImg?>';
|
||||
}
|
||||
|
||||
var pasteBegin = function()
|
||||
{
|
||||
$.enableForm(false, 0, 1);
|
||||
$('body').one('click.ke' + kuid, function(){$.enableForm(true);});
|
||||
cmd.inserthtml(imageLoadingEle);
|
||||
keditor.readonly(true);
|
||||
};
|
||||
|
||||
var pasteEnd = function(error)
|
||||
{
|
||||
if(error)
|
||||
{
|
||||
if(error === true) error = '<?php echo $this->lang->pasteImgFail;?>';
|
||||
$.zui.messager.danger(error, {placement: 'center'});
|
||||
}
|
||||
$.enableForm(true, 0, 1);
|
||||
$('body').off('.ke' + kuid);
|
||||
$(doc.body).find('.image-loading-ele').remove();
|
||||
keditor.readonly(false);
|
||||
};
|
||||
|
||||
var pasteUrl = createLink('file', 'ajaxPasteImage', 'uid=' + kuid);
|
||||
|
||||
/* Paste in chrome.*/
|
||||
/* Code reference from http://www.foliotek.com/devblog/copy-images-from-clipboard-in-javascript/. */
|
||||
if(K.WEBKIT)
|
||||
{
|
||||
$(doc.body).bind('paste', function(ev)
|
||||
{
|
||||
var $this = $(this);
|
||||
var original = ev.originalEvent;
|
||||
var file = original.clipboardData.items[0].getAsFile();
|
||||
if(file)
|
||||
{
|
||||
pasteBegin();
|
||||
|
||||
var reader = new FileReader();
|
||||
reader.onload = function(evt)
|
||||
{
|
||||
var result = evt.target.result;
|
||||
var arr = result.split(",");
|
||||
var data = arr[1]; // raw base64
|
||||
var contentType = arr[0].split(";")[0].split(":")[1];
|
||||
|
||||
html = '<img src="' + result + '" alt="" />';
|
||||
$.post(pasteUrl, {editor: html}, function(data)
|
||||
{
|
||||
cmd.inserthtml(data);
|
||||
pasteEnd();
|
||||
}).error(function()
|
||||
{
|
||||
pasteEnd(true);
|
||||
});
|
||||
};
|
||||
reader.readAsDataURL(file);
|
||||
}
|
||||
});
|
||||
}
|
||||
/* Paste in firefox and other firefox. */
|
||||
else
|
||||
{
|
||||
K(doc.body).bind('paste', function(ev)
|
||||
{
|
||||
setTimeout(function()
|
||||
{
|
||||
var html = K(doc.body).html();
|
||||
if(html.search(/<img src="data:.+;base64,/) > -1)
|
||||
{
|
||||
pasteBegin();
|
||||
$.post(pasteUrl, {editor: html}, function(data)
|
||||
{
|
||||
if(data.indexOf('<img') === 0) data = '<p>' + data + '</p>';
|
||||
frame.html(data);
|
||||
pasteEnd();
|
||||
}).error(function()
|
||||
{
|
||||
pasteEnd(true);
|
||||
});
|
||||
}
|
||||
}, 80);
|
||||
});
|
||||
}
|
||||
/* End */
|
||||
|
||||
/* Add for placeholder. */
|
||||
$(this.edit.doc).find('body').after('<span class="kindeditor-ph" style="width:100%;color:#888; padding:5px 5px 5px 7px; background-color:transparent; position:absolute;z-index:10;top:2px;border:0;overflow:auto;resize:none; font-size:13px;"></span>');
|
||||
var $placeholder = $(this.edit.doc).find('.kindeditor-ph');
|
||||
$placeholder.html(placeholder);
|
||||
$placeholder.css('pointerEvents', 'none');
|
||||
$placeholder.click(function(){frame.doc.body.focus()});
|
||||
if(frame.html() != '') $placeholder.hide();
|
||||
},
|
||||
afterFocus: function()
|
||||
{
|
||||
var frame = this.edit;
|
||||
var $placeholder = $(frame.doc).find('.kindeditor-ph');
|
||||
if($placeholder.size() == 0)
|
||||
{
|
||||
setTimeout(function(){$(frame.doc).find('.kindeditor-ph').hide();}, 50);
|
||||
}
|
||||
else
|
||||
{
|
||||
$placeholder.hide();
|
||||
}
|
||||
$editor.prev('.ke-container').addClass('focus');
|
||||
$(document).trigger('mousedown'); // see http://pms.zentao.net/task-view-5115.html
|
||||
},
|
||||
afterBlur: function()
|
||||
{
|
||||
this.sync();
|
||||
$editor.prev('.ke-container').removeClass('focus');
|
||||
var frame = this.edit;
|
||||
if(K(frame.doc.body).html() == '') $(frame.doc).find('.kindeditor-ph').show();
|
||||
},
|
||||
afterTab: function(id)
|
||||
{
|
||||
var $next = $editor.next(nextFormControl);
|
||||
if(!$next.length) $next = $editor.parent().next().find(nextFormControl);
|
||||
if(!$next.length) $next = $editor.parent().parent().next().find(nextFormControl);
|
||||
$next = $next.first().focus();
|
||||
var keditor = $next.data('keditor');
|
||||
if(keditor) keditor.focus();
|
||||
else if($next.hasClass('chosen')) $next.trigger('chosen:activate');
|
||||
}
|
||||
placeholder: $editor.attr('placeholder') || options.placeholder || ''
|
||||
});
|
||||
|
||||
try
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
<style>
|
||||
#mainMenu #query.btn-group li {position: relative;}
|
||||
#mainMenu #query.btn-group li a{margin-right:20px;}
|
||||
#mainMenu #query.btn-group li .btn-delete{
|
||||
padding:0 7px;
|
||||
position: absolute;
|
||||
right: -10px;
|
||||
top: -5px;
|
||||
display: block;
|
||||
width: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
<?php
|
||||
if(isset($lang->custom->queryList))
|
||||
{
|
||||
echo '<div class="btn-group" id="query">';
|
||||
$active = '';
|
||||
$current = $menuItem->text;
|
||||
$dropdownHtml = "<ul class='dropdown-menu'>";
|
||||
foreach($lang->custom->queryList as $queryID => $queryTitle)
|
||||
{
|
||||
if($isBySearch and $queryID == $param)
|
||||
{
|
||||
$active = 'btn-active-text';
|
||||
$current = "<span class='text'>{$queryTitle}</span> <span class='label label-light label-badge'>{$pager->recTotal}</span>";
|
||||
}
|
||||
$dropdownHtml .= '<li' . ($param == $queryID ? " class='active'" : '') . '>';
|
||||
$dropdownHtml .= html::a(sprintf($searchBrowseLink, $queryID), $queryTitle);
|
||||
$dropdownHtml .= html::a("###", "<i class='icon icon-close'></i>", '', "class='btn-delete' data-id={$queryID} onclick='removeQueryFromMenu(this)'");
|
||||
$dropdownHtml .= '</li>';
|
||||
}
|
||||
$dropdownHtml .= '</ul>';
|
||||
|
||||
echo html::a('javascript:;', $current . " <span class='caret'></span>", '', "data-toggle='dropdown' class='btn btn-link $active'");
|
||||
echo $dropdownHtml;
|
||||
echo '</div>';
|
||||
}
|
||||
?>
|
||||
<script>
|
||||
function removeQueryFromMenu(obj)
|
||||
{
|
||||
var $obj = $(obj);
|
||||
var link = createLink('search', 'ajaxRemoveMenu', "queryID=" + $obj.data('id'));
|
||||
$.get(link, function()
|
||||
{
|
||||
$obj.closest('li').remove();
|
||||
if($('#mainMenu #query.btn-group').find('li').length == 0) $('#mainMenu #query.btn-group').remove();
|
||||
})
|
||||
return false;
|
||||
}
|
||||
</script>
|
||||
Reference in New Issue
Block a user