Commit 1f4fb4ccb5846f16fd46a6179023cfcc9854d9d0

Authored by Jarrett Jordaan
1 parent b339470e

PT:2492070 : First Login wizard updated

Committed by: Jarrett Jordaan

Reviewed by: Megan Watson
dashboard.php
@@ -135,9 +135,21 @@ class DashboardDispatcher extends KTStandardDispatcher { @@ -135,9 +135,21 @@ class DashboardDispatcher extends KTStandardDispatcher {
135 'dashlets_left' => $aDashletsLeft, 135 'dashlets_left' => $aDashletsLeft,
136 'dashlets_right' => $aDashletsRight, 136 'dashlets_right' => $aDashletsRight,
137 ); 137 );
  138 +
  139 + // TODO : Is this ok?
  140 + if(file_exists(KT_DIR.DIRECTORY_SEPARATOR.'var'.DIRECTORY_SEPARATOR.'bin'.DIRECTORY_SEPARATOR."firstlogin.lock")) {
  141 + $this->runFirstLoginWizard($oTemplate, $aTemplateData);
  142 + }
  143 +
138 return $oTemplate->render($aTemplateData); 144 return $oTemplate->render($aTemplateData);
139 } 145 }
140 146
  147 + //
  148 + function runFirstLoginWizard($oTemplate, $aTemplateData) {
  149 + $this->oPage->requireJSResource('thirdpartyjs/jquery/jquery-1.3.2.min.js');
  150 + $this->oPage->requireJSResource('setup/wizard/resources/js/firstlogin.js');
  151 + }
  152 +
141 // return some kind of ID for each dashlet 153 // return some kind of ID for each dashlet
142 // currently uses the class name 154 // currently uses the class name
143 function _getDashletId($oDashlet) { 155 function _getDashletId($oDashlet) {
setup/firstlogin/firstlogin.php
@@ -491,7 +491,8 @@ class firstlogin { @@ -491,7 +491,8 @@ class firstlogin {
491 $this->_readXml(); // Xml steps 491 $this->_readXml(); // Xml steps
492 $this->_resetSessions(); // Make sure session is cleared 492 $this->_resetSessions(); // Make sure session is cleared
493 $this->_loadFromSessions(); 493 $this->_loadFromSessions();
494 - if(isset($_POST['Next'])) { $this->action = 'next'; 494 + if(isset($_POST['Next'])) {
  495 + $this->action = 'next';
495 $this->response = 'next'; 496 $this->response = 'next';
496 } elseif (isset($_POST['Previous'])) { 497 } elseif (isset($_POST['Previous'])) {
497 $this->action = 'previous'; 498 $this->action = 'previous';
@@ -509,8 +510,31 @@ class firstlogin { @@ -509,8 +510,31 @@ class firstlogin {
509 $this->response = ''; 510 $this->response = '';
510 $this->action = ''; 511 $this->action = '';
511 } 512 }
  513 + $this->loadAjax();
512 } 514 }
513 515
  516 + private function loadAjax() {
  517 + if(isset($_GET['Next'])) {
  518 + $this->action = 'next';
  519 + $this->response = 'next';
  520 + } elseif (isset($_GET['Previous'])) {
  521 + $this->action = 'previous';
  522 + $this->response = 'previous';
  523 + } elseif (isset($_GET['Confirm'])) {
  524 + $this->action = 'confirm';
  525 + $this->response = 'next';
  526 + } elseif (isset($_GET['Edit'])) {
  527 + $this->action = 'edit';
  528 + $this->response = 'next';
  529 + } elseif (isset($_GET['Skip'])) {
  530 + $this->action = 'next';
  531 + $this->response = 'next';
  532 + } else {
  533 + $this->response = '';
  534 + $this->action = '';
  535 + }
  536 + }
  537 +
514 /** 538 /**
515 * Main control to handle the flow 539 * Main control to handle the flow
516 * 540 *
setup/firstlogin/firstloginUtil.php
@@ -85,47 +85,23 @@ class firstloginUtil extends InstallUtil { @@ -85,47 +85,23 @@ class firstloginUtil extends InstallUtil {
85 * @return mixed 85 * @return mixed
86 */ 86 */
87 public function checkStructurePermissions() { 87 public function checkStructurePermissions() {
88 - // Check if Wizard Directory is writable  
89 - if(!$this->_checkPermission(WIZARD_DIR)) { 88 + if(!$this->_checkPermission(WIZARD_DIR)) { // Check if Wizard Directory is writable
90 return 'firstlogin'; 89 return 'firstlogin';
91 } 90 }
92 91
93 return true; 92 return true;
94 } 93 }
95 94
96 - public function loadInstallServices() {  
97 - require_once("../wizard/steps/services.php");  
98 - $s = new services();  
99 - return $s->getServices();  
100 - }  
101 -  
102 - public function loadInstallService($serviceName) {  
103 - require_once("../wizard/lib/services/service.php");  
104 - require_once("../wizard/lib/services/".OS."Service.php");  
105 - require_once("../wizard/lib/services/$serviceName.php");  
106 - return new $serviceName();  
107 - }  
108 -  
109 /** 95 /**
110 - * Return port of the old installation 96 + * Deletes first login lock file
111 * 97 *
112 - * @param location  
113 - * @return string 98 + * @author KnowledgeTree Team
  99 + * @access public
  100 + * @return void
114 */ 101 */
115 - public function getPort($location) {  
116 - if(WINDOWS_OS) {  
117 - $myIni = "my.ini";  
118 - } else {  
119 - $myIni = "my.cnf";  
120 - }  
121 - $dbConfigPath = $location.DS."mysql".DS."$myIni";  
122 - if(file_exists($dbConfigPath)) {  
123 - $this->iniUtilities->load($dbConfigPath);  
124 - $dbSettings = $this->iniUtilities->getSection('mysqladmin');  
125 - return $dbSettings['port'];  
126 - }  
127 -  
128 - return '3306'; 102 + public function deleteFirstLogin() {
  103 + if(file_exists(SYSTEM_DIR.'var'.DS.'bin'.DS."firstlogin.lock"))
  104 + unlink(SYSTEM_DIR.'var'.DS.'bin'.DS."firstlogin.lock");
129 } 105 }
130 } 106 }
131 ?> 107 ?>
132 \ No newline at end of file 108 \ No newline at end of file
setup/firstlogin/firstloginWizard.php
@@ -165,7 +165,7 @@ class firstloginWizard extends WizardBase { @@ -165,7 +165,7 @@ class firstloginWizard extends WizardBase {
165 } elseif ($this->getBypass() === "0") { 165 } elseif ($this->getBypass() === "0") {
166 $this->createFile(); 166 $this->createFile();
167 } 167 }
168 - if(!$this->isFirstLogin()) { // Check if the systems 168 + if($this->isFirstLogin()) { // Check if the systems
169 $response = $this->systemChecks(); 169 $response = $this->systemChecks();
170 if($response === true) { 170 if($response === true) {
171 $this->display(); 171 $this->display();
setup/firstlogin/step.php
@@ -145,7 +145,23 @@ class Step extends StepBase @@ -145,7 +145,23 @@ class Step extends StepBase
145 */ 145 */
146 public function run() { 146 public function run() {
147 return $this->run; 147 return $this->run;
148 - } 148 + }
  149 +
  150 + /**
  151 + * Checks if next button has been clicked
  152 + *
  153 + * @author KnowledgeTree Team
  154 + * @param none
  155 + * @access public
  156 + * @return boolean
  157 + */
  158 + public function next() {
  159 + if(isset($_GET['Next'])) {
  160 + return true;
  161 + }
  162 +
  163 + return false;
  164 + }
149 } 165 }
150 166
151 ?> 167 ?>
152 \ No newline at end of file 168 \ No newline at end of file
setup/firstlogin/steps/firstloginComplete.php
@@ -68,7 +68,7 @@ class firstloginComplete extends Step { @@ -68,7 +68,7 @@ class firstloginComplete extends Step {
68 } 68 }
69 69
70 function doRun() { 70 function doRun() {
71 - 71 + $this->util->deleteFirstLogin();
72 return 'landing'; 72 return 'landing';
73 } 73 }
74 74
setup/firstlogin/steps/firstloginTemplates.php
@@ -91,14 +91,16 @@ class firstloginTemplates extends Step { @@ -91,14 +91,16 @@ class firstloginTemplates extends Step {
91 91
92 function applyTemplates() { 92 function applyTemplates() {
93 $templateId = KTUtil::arrayGet($_POST['data'], "templateId", 0); 93 $templateId = KTUtil::arrayGet($_POST['data'], "templateId", 0);
  94 + if($templateId < 1) {
  95 + $templateId = KTUtil::arrayGet($_GET, "templateId", 0);// Could be ajax call
  96 + }
94 if($templateId > 0) { 97 if($templateId > 0) {
95 if (KTPluginUtil::pluginIsActive('fs.FolderTemplatesPlugin.plugin')) { // Check if folder templates plugin is active 98 if (KTPluginUtil::pluginIsActive('fs.FolderTemplatesPlugin.plugin')) { // Check if folder templates plugin is active
96 $oRegistry =& KTPluginRegistry::getSingleton(); 99 $oRegistry =& KTPluginRegistry::getSingleton();
97 $oPlugin =& $oRegistry->getPlugin('fs.FolderTemplatesPlugin.plugin'); // Get a handle on the plugin 100 $oPlugin =& $oRegistry->getPlugin('fs.FolderTemplatesPlugin.plugin'); // Get a handle on the plugin
98 - return $oPlugin->applyFolderTemplate($templateId, 1); 101 + return $oPlugin->firstLoginAction(1, $templateId);
99 } 102 }
100 } 103 }
101 -  
102 return false; 104 return false;
103 } 105 }
104 106
setup/firstlogin/templates/complete.tpl
@@ -6,6 +6,9 @@ @@ -6,6 +6,9 @@
6 <input type="submit" name="Next" value="Finish" class="button_next"/> 6 <input type="submit" name="Next" value="Finish" class="button_next"/>
7 </form> 7 </form>
8 <script type="text/javascript"> 8 <script type="text/javascript">
9 - $("#duname").focus(); 9 + $("form").bind("submit", function() {
  10 + closeFirstLogin();
  11 + return false;
  12 + });
10 </script> 13 </script>
11 <?php if (AJAX) { echo $html->js('form.js'); } ?> 14 <?php if (AJAX) { echo $html->js('form.js'); } ?>
12 \ No newline at end of file 15 \ No newline at end of file
setup/firstlogin/templates/templates.tpl
1 -<form id="<?php echo $step_name; ?>" action="index.php?step_name=<?php echo $step_name; ?>" method="post"> 1 +<form id="step_name_<?php echo $step_name; ?>" action="index.php?step_name=<?php echo $step_name; ?>" method="post">
2 <p class="title">Apply Templates</p> 2 <p class="title">Apply Templates</p>
3 <p class="description">You can select a base folder layout to apply to your root folder of KnowledgeTree.</p> 3 <p class="description">You can select a base folder layout to apply to your root folder of KnowledgeTree.</p>
4 <div id="step_content_<?php echo $step_name; ?>" class="step"> 4 <div id="step_content_<?php echo $step_name; ?>" class="step">
5 <div class="field "> 5 <div class="field ">
6 <p class="descriptiveText">Choose a template, if you would like to generate predefined folders.</p> 6 <p class="descriptiveText">Choose a template, if you would like to generate predefined folders.</p>
7 <p class="errorMessage"></p> 7 <p class="errorMessage"></p>
8 - <select name="data[templateId]">  
9 - <option selected="selected" value="">- No template -</option> 8 + <select name="data[templateId]" id="selectedTemplate">
  9 + <option selected="selected" value="0">- No template -</option>
10 <?php 10 <?php
11 foreach ($aFolderTemplates as $oFolderTemplate) { 11 foreach ($aFolderTemplates as $oFolderTemplate) {
12 echo "<option onclick=\"javascript:{fl.showFolderTemplateTree('{$oFolderTemplate->getId()}')}\" value=\"{$oFolderTemplate->getId()}\">".$oFolderTemplate->getName()."</option>"; 12 echo "<option onclick=\"javascript:{fl.showFolderTemplateTree('{$oFolderTemplate->getId()}')}\" value=\"{$oFolderTemplate->getId()}\">".$oFolderTemplate->getName()."</option>";
@@ -45,10 +45,13 @@ @@ -45,10 +45,13 @@
45 </table> 45 </table>
46 </div> 46 </div>
47 </div> 47 </div>
48 - <input type="submit" name="Skip" value="Skip" class="button_skip"/>  
49 - <input type="submit" name="Next" value="Next" class="button_next"/> 48 + <input id="skip" type="submit" name="Skip" value="Skip" class="button_skip"/>
  49 + <input id="next" type="submit" name="Next" value="Next" class="button_next"/>
50 </form> 50 </form>
51 <script type="text/javascript"> 51 <script type="text/javascript">
52 - $("#duname").focus(); 52 + $("form").bind("submit", function() {
  53 + fl.sendFirstLoginForm();
  54 + return false;
  55 + });
53 </script> 56 </script>
54 <?php if (AJAX) { echo $html->js('form.js'); } ?> 57 <?php if (AJAX) { echo $html->js('form.js'); } ?>
55 \ No newline at end of file 58 \ No newline at end of file
setup/wizard/installer.php
@@ -142,6 +142,7 @@ class Installer extends NavBase { @@ -142,6 +142,7 @@ class Installer extends NavBase {
142 */ 142 */
143 private function completeInstall() { 143 private function completeInstall() {
144 touch(SYSTEM_DIR.'var'.DS.'bin'.DS."install.lock"); 144 touch(SYSTEM_DIR.'var'.DS.'bin'.DS."install.lock");
  145 + touch(SYSTEM_DIR.'var'.DS.'bin'.DS."firstlogin.lock");
145 } 146 }
146 147
147 /** 148 /**
setup/wizard/resources/js/firstlogin.js
1 -// Class First Login  
2 -//TODO : Plugin path in js  
3 -var ktfolderAccess = "../../plugins/commercial/folder-templates/KTFolderTemplates.php?action=";  
4 -var ktmanageFolderAccess = "admin.php?kt_path_info=misc/adminfoldertemplatesmanagement&action="; 1 +var win;
  2 +
5 $(function() { // Document is ready 3 $(function() { // Document is ready
6 if($("#wrapper").attr('class') != 'wizard') {// Check if we in a wizard, or on the dashboard 4 if($("#wrapper").attr('class') != 'wizard') {// Check if we in a wizard, or on the dashboard
7 showForm(); // Display first login wizard 5 showForm(); // Display first login wizard
8 } 6 }
9 }); 7 });
10 8
  9 +// Class First Login
11 function firstlogin(rootUrl) { 10 function firstlogin(rootUrl) {
  11 + this.rootUrl = rootUrl;
12 this.ktfolderAccess = rootUrl + "plugins/commercial/folder-templates/KTFolderTemplates.php?action="; 12 this.ktfolderAccess = rootUrl + "plugins/commercial/folder-templates/KTFolderTemplates.php?action=";
13 this.ktmanageFolderAccess = rootUrl + "admin.php?kt_path_info=misc/adminfoldertemplatesmanagement&action="; 13 this.ktmanageFolderAccess = rootUrl + "admin.php?kt_path_info=misc/adminfoldertemplatesmanagement&action=";
14 this.ajaxOn = false; 14 this.ajaxOn = false;
@@ -49,6 +49,7 @@ firstlogin.prototype.hideFolderTemplateTrees = function() { @@ -49,6 +49,7 @@ firstlogin.prototype.hideFolderTemplateTrees = function() {
49 ); 49 );
50 } 50 }
51 51
  52 +// Template has this action. Not needed in first login wizard
52 firstlogin.prototype.showNodeOptions = function() { 53 firstlogin.prototype.showNodeOptions = function() {
53 54
54 } 55 }
@@ -68,13 +69,12 @@ var showForm = function() { @@ -68,13 +69,12 @@ var showForm = function() {
68 shadow: false, 69 shadow: false,
69 modal: true 70 modal: true
70 }); 71 });
71 -  
72 this.win.show(); 72 this.win.show();
73 } 73 }
74 74
75 var createForm = function() { 75 var createForm = function() {
76 var holder = "<div id='firstlogin'></div>"; 76 var holder = "<div id='firstlogin'></div>";
77 - $("#wrapper").append(holder); // Append to current dashboard 77 + $("#pageBody").append(holder); // Append to current dashboard
78 var address = "setup/firstlogin/index.php"; 78 var address = "setup/firstlogin/index.php";
79 getUrl(address, "firstlogin"); // Pull in existing wizard 79 getUrl(address, "firstlogin"); // Pull in existing wizard
80 } 80 }
@@ -93,6 +93,19 @@ var getUrl = function (address, div) { @@ -93,6 +93,19 @@ var getUrl = function (address, div) {
93 }); 93 });
94 } 94 }
95 95
  96 +/*
  97 +* Close the popup
  98 +*/
  99 +var closeFirstLogin = function () {
  100 + this.win.destroy();
  101 + $('.ext-el-mask').each( // TODO : Why does overlay hang around?
  102 + function() {
  103 + $(this).remove();
  104 + }
  105 + );
  106 +
  107 +}
  108 +
96 // Node clicked 109 // Node clicked
97 firstlogin.prototype.nodeAction = function(updateContentDiv, updateDiv, address) { 110 firstlogin.prototype.nodeAction = function(updateContentDiv, updateDiv, address) {
98 var className = $("#"+updateDiv).attr('class'); 111 var className = $("#"+updateDiv).attr('class');
@@ -106,4 +119,13 @@ firstlogin.prototype.nodeAction = function(updateContentDiv, updateDiv, address) @@ -106,4 +119,13 @@ firstlogin.prototype.nodeAction = function(updateContentDiv, updateDiv, address)
106 } 119 }
107 } 120 }
108 121
  122 +firstlogin.prototype.getRootUrl = function() {
  123 + return this.rootUrl;
  124 +}
109 125
  126 +firstlogin.prototype.sendFirstLoginForm = function() {
  127 + var templateId = $("#selectedTemplate").val();
  128 + var action = $("#step_name_templates").attr('action');
  129 + var address = this.rootUrl + "setup/firstlogin/" + action + "&templateId=" + templateId + "&Next=Next";
  130 + getUrl(address, 'firstlogin');
  131 +}
setup/wizard/steps/complete.php
@@ -242,21 +242,12 @@ class complete extends Step { @@ -242,21 +242,12 @@ class complete extends Step {
242 function checkInstallType() { 242 function checkInstallType() {
243 if ($this->util->isMigration()) { 243 if ($this->util->isMigration()) {
244 $this->migrate_check = true; 244 $this->migrate_check = true;
245 - $this->registerPlugins(); // Set silent mode variables  
246 } else { 245 } else {
247 $this->migrate_check = false; 246 $this->migrate_check = false;
248 } 247 }
249 } 248 }
250 249
251 /** 250 /**
252 - * Register extra commercial plugins  
253 - *  
254 - */  
255 - private function registerPlugins() {  
256 -  
257 - }  
258 -  
259 - /**  
260 * Set all silent mode varibles 251 * Set all silent mode varibles
261 * 252 *
262 */ 253 */