Commit 79c38dcb6339cfe065472d40f38a1b73ff8dceff
1 parent
e3a4474f
Merge Work/Home
Commited By: Jarrett Jordaan Reviewed By: Megan Watson
Showing
37 changed files
with
570 additions
and
145 deletions
setup/wizard/config/databases.xml
| ... | ... | @@ -15,7 +15,7 @@ |
| 15 | 15 | <dport>3306</dport> |
| 16 | 16 | <dname>dms</dname> |
| 17 | 17 | <duname>root</duname> |
| 18 | - <dmsadminuser>dmsadminuser</dmsadminuser> | |
| 18 | + <dmsadminuser>dmsuser</dmsadminuser> | |
| 19 | 19 | <dmsaupass>js9281djw</dmsaupass> |
| 20 | 20 | <dmsuser>dmsuser</dmsuser> |
| 21 | 21 | <dmsupass>djw9281js</dmsupass> | ... | ... |
setup/wizard/htmlHelper.php
0 → 100644
| 1 | +<?php | |
| 2 | + require_once("path.php"); | |
| 3 | + | |
| 4 | + class htmlHelper { | |
| 5 | + var $tags = array( | |
| 6 | + 'meta' => '<meta%s/>', | |
| 7 | + 'metalink' => '<link href="%s"%s/>', | |
| 8 | + 'link' => '<a href="%s"%s>%s</a>', | |
| 9 | + 'mailto' => '<a href="mailto:%s" %s>%s</a>', | |
| 10 | + 'form' => '<form %s>', | |
| 11 | + 'formend' => '</form>', | |
| 12 | + 'input' => '<input name="%s" %s/>', | |
| 13 | + 'textarea' => '<textarea name="%s" %s>%s</textarea>', | |
| 14 | + 'hidden' => '<input type="hidden" name="%s" %s/>', | |
| 15 | + 'checkbox' => '<input type="checkbox" name="%s" %s/>', | |
| 16 | + 'checkboxmultiple' => '<input type="checkbox" name="%s[]"%s />', | |
| 17 | + 'radio' => '<input type="radio" name="%s" id="%s" %s />%s', | |
| 18 | + 'selectstart' => '<select name="%s"%s>', | |
| 19 | + 'selectmultiplestart' => '<select name="%s[]"%s>', | |
| 20 | + 'selectempty' => '<option value=""%s> </option>', | |
| 21 | + 'selectoption' => '<option value="%s"%s>%s</option>', | |
| 22 | + 'selectend' => '</select>', | |
| 23 | + 'optiongroup' => '<optgroup label="%s"%s>', | |
| 24 | + 'optiongroupend' => '</optgroup>', | |
| 25 | + 'checkboxmultiplestart' => '', | |
| 26 | + 'checkboxmultipleend' => '', | |
| 27 | + 'password' => '<input type="password" name="%s" %s/>', | |
| 28 | + 'file' => '<input type="file" name="%s" %s/>', | |
| 29 | + 'file_no_model' => '<input type="file" name="%s" %s/>', | |
| 30 | + 'submit' => '<input type="submit" %s/>', | |
| 31 | + 'submitimage' => '<input type="image" src="%s" %s/>', | |
| 32 | + 'button' => '<input type="%s" %s/>', | |
| 33 | + 'image' => '<img src="%s" %s/>', | |
| 34 | + 'tableheader' => '<th%s>%s</th>', | |
| 35 | + 'tableheaderrow' => '<tr%s>%s</tr>', | |
| 36 | + 'tablecell' => '<td%s>%s</td>', | |
| 37 | + 'tablerow' => '<tr%s>%s</tr>', | |
| 38 | + 'block' => '<div%s>%s</div>', | |
| 39 | + 'blockstart' => '<div%s>', | |
| 40 | + 'blockend' => '</div>', | |
| 41 | + 'tag' => '<%s%s>%s</%s>', | |
| 42 | + 'tagstart' => '<%s%s>', | |
| 43 | + 'tagend' => '</%s>', | |
| 44 | + 'para' => '<p%s>%s</p>', | |
| 45 | + 'parastart' => '<p%s>', | |
| 46 | + 'label' => '<label for="%s"%s>%s</label>', | |
| 47 | + 'fieldset' => '<fieldset%s>%s</fieldset>', | |
| 48 | + 'fieldsetstart' => '<fieldset><legend>%s</legend>', | |
| 49 | + 'fieldsetend' => '</fieldset>', | |
| 50 | + 'legend' => '<legend>%s</legend>', | |
| 51 | + 'css' => '<link rel="%s" type="text/css" href="%s" %s/>', | |
| 52 | + 'style' => '<style type="text/css"%s>%s</style>', | |
| 53 | + 'charset' => '<meta http-equiv="Content-Type" content="text/html; charset=%s" />', | |
| 54 | + 'ul' => '<ul%s>%s</ul>', | |
| 55 | + 'ol' => '<ol%s>%s</ol>', | |
| 56 | + 'li' => '<li%s>%s</li>', | |
| 57 | + 'error' => '<div%s>%s</div>' | |
| 58 | + ); | |
| 59 | + | |
| 60 | + function __construct() { | |
| 61 | + } | |
| 62 | + | |
| 63 | + function js($name) { | |
| 64 | + return "<script type=\"text/javascript\" src=\"resources/js/$name\"></script>"; | |
| 65 | + } | |
| 66 | + | |
| 67 | + function css($name) { | |
| 68 | + return "<link rel=\"stylesheet\" type=\"text/css\" href=\"resources/css/$name\" />"; | |
| 69 | + } | |
| 70 | + | |
| 71 | + function image($name, $options = array()) { | |
| 72 | + $path = "resources/graphics/$name"; | |
| 73 | + $image = sprintf($this->tags['image'], $path, $this->_parseAttributes($options, null, '', ' ')); | |
| 74 | + | |
| 75 | + return $image; | |
| 76 | + //return "<img src=\"resources/graphics/$name\"/>"; | |
| 77 | + } | |
| 78 | + | |
| 79 | + function _parseAttributes($options, $exclude = null, $insertBefore = ' ', $insertAfter = null) { | |
| 80 | + if (is_array($options)) { | |
| 81 | + $options = array_merge(array('escape' => true), $options); | |
| 82 | + | |
| 83 | + if (!is_array($exclude)) { | |
| 84 | + $exclude = array(); | |
| 85 | + } | |
| 86 | + $keys = array_diff(array_keys($options), array_merge((array)$exclude, array('escape'))); | |
| 87 | + $values = array_intersect_key(array_values($options), $keys); | |
| 88 | + $escape = $options['escape']; | |
| 89 | + $attributes = array(); | |
| 90 | + | |
| 91 | + foreach ($keys as $index => $key) { | |
| 92 | + $attributes[] = $this->__formatAttribute($key, $values[$index], $escape); | |
| 93 | + } | |
| 94 | + $out = implode(' ', $attributes); | |
| 95 | + } else { | |
| 96 | + $out = $options; | |
| 97 | + } | |
| 98 | + return $out ? $insertBefore . $out . $insertAfter : ''; | |
| 99 | + } | |
| 100 | + | |
| 101 | + function __formatAttribute($key, $value, $escape = true) { | |
| 102 | + $attribute = ''; | |
| 103 | + $attributeFormat = '%s="%s"'; | |
| 104 | + $minimizedAttributes = array('compact', 'checked', 'declare', 'readonly', 'disabled', 'selected', 'defer', 'ismap', 'nohref', 'noshade', 'nowrap', 'multiple', 'noresize'); | |
| 105 | + if (is_array($value)) { | |
| 106 | + $value = ''; | |
| 107 | + } | |
| 108 | + | |
| 109 | + if (in_array($key, $minimizedAttributes)) { | |
| 110 | + if ($value === 1 || $value === true || $value === 'true' || $value == $key) { | |
| 111 | + $attribute = sprintf($attributeFormat, $key, $key); | |
| 112 | + } | |
| 113 | + } else { | |
| 114 | + $attribute = sprintf($attributeFormat, $key, $this->ife($escape, $this->h($value), $value)); | |
| 115 | + } | |
| 116 | + return $attribute; | |
| 117 | + } | |
| 118 | + | |
| 119 | + function ife($condition, $val1 = null, $val2 = null) { | |
| 120 | + if (!empty($condition)) { | |
| 121 | + return $val1; | |
| 122 | + } | |
| 123 | + return $val2; | |
| 124 | + } | |
| 125 | + | |
| 126 | + function h($text, $charset = 'UTF-8') { | |
| 127 | + if (is_array($text)) { | |
| 128 | + return array_map('h', $text); | |
| 129 | + } | |
| 130 | + return htmlspecialchars($text, ENT_QUOTES, $charset); | |
| 131 | + } | |
| 132 | + } | |
| 133 | +?> | |
| 0 | 134 | \ No newline at end of file | ... | ... |
setup/wizard/install.lock
setup/wizard/installUtil.php
| ... | ... | @@ -254,9 +254,12 @@ class InstallUtil { |
| 254 | 254 | * @param boolean $create Whether to create the directory if it doesn't exist |
| 255 | 255 | * @return array The message and css class to use |
| 256 | 256 | */ |
| 257 | - public function checkPermission($dir, $create=false) | |
| 257 | + public function checkPermission($dir, $create=false, $file = false) | |
| 258 | 258 | { |
| 259 | - $exist = 'Directory doesn\'t exist'; | |
| 259 | + if(!$file) | |
| 260 | + $exist = 'Directory doesn\'t exist'; | |
| 261 | + else | |
| 262 | + $exist = 'File doesn\'t exist'; | |
| 260 | 263 | $write = 'Directory not writable'; |
| 261 | 264 | $ret = array('class' => 'cross'); |
| 262 | 265 | ... | ... |
setup/wizard/installWizard.php
| ... | ... | @@ -73,7 +73,7 @@ class InstallWizard { |
| 73 | 73 | protected $bypass = null; |
| 74 | 74 | |
| 75 | 75 | /** |
| 76 | - * Install bypass flag | |
| 76 | + * Level of debugger | |
| 77 | 77 | * |
| 78 | 78 | * @author KnowledgeTree Team |
| 79 | 79 | * @access protected |
| ... | ... | @@ -228,7 +228,7 @@ class InstallWizard { |
| 228 | 228 | if(isset($_GET['debug'])) { |
| 229 | 229 | $this->setDebugLevel($_GET['debug']); |
| 230 | 230 | } else { |
| 231 | - $this->setDebugLevel(0); | |
| 231 | + $this->setDebugLevel($this->debugLevel); | |
| 232 | 232 | } |
| 233 | 233 | $this->setIUtil(new InstallUtil()); |
| 234 | 234 | } | ... | ... |
setup/wizard/lib/helpers/config-path-mock-windows
0 → 100644
setup/wizard/lib/services/unixLucene.php
| ... | ... | @@ -42,6 +42,7 @@ |
| 42 | 42 | |
| 43 | 43 | class unixLucene extends unixService { |
| 44 | 44 | public $util; |
| 45 | + | |
| 45 | 46 | private $shutdownScript; |
| 46 | 47 | private $indexerDir; |
| 47 | 48 | private $lucenePidFile; |
| ... | ... | @@ -58,7 +59,6 @@ class unixLucene extends unixService { |
| 58 | 59 | } |
| 59 | 60 | |
| 60 | 61 | public function load() { |
| 61 | - $this->setSystemOutputDir(); | |
| 62 | 62 | $this->setLuceneDir(SYSTEM_DIR."bin".DS."luceneserver".DS); |
| 63 | 63 | $this->setIndexerDir(SYSTEM_DIR."search2".DS."indexing".DS."bin".DS); |
| 64 | 64 | $this->setLucenePidFile("lucene_test.pid"); |
| ... | ... | @@ -68,12 +68,6 @@ class unixLucene extends unixService { |
| 68 | 68 | $this->setShutdownScript("shutdown.php"); |
| 69 | 69 | } |
| 70 | 70 | |
| 71 | - function setSystemOutputDir() { | |
| 72 | - $conf = $this->util->getDataFromSession('configuration'); | |
| 73 | - print_r($conf); | |
| 74 | - die; | |
| 75 | -// $conf['path']['']; | |
| 76 | - } | |
| 77 | 71 | |
| 78 | 72 | public function setIndexerDir($indexerDir) { |
| 79 | 73 | $this->indexerDir = $indexerDir; |
| ... | ... | @@ -190,7 +184,7 @@ class unixLucene extends unixService { |
| 190 | 184 | $state = $this->status(); |
| 191 | 185 | if($state != 'STARTED') { |
| 192 | 186 | $cmd = "cd ".$this->getLuceneDir()."; "; |
| 193 | - $cmd .= "nohup java {$this->getJavaXmx()} {$this->getJavaXmx()} -jar ".$this->getLuceneSource()." > ".SYS_LOG_DIR."lucene.log 2>&1 & echo $!"; | |
| 187 | + $cmd .= "nohup java {$this->getJavaXmx()} {$this->getJavaXmx()} -jar ".$this->getLuceneSource()." > ".$this->outputDir."lucene.log 2>&1 & echo $!"; | |
| 194 | 188 | if(DEBUG) { |
| 195 | 189 | echo "Command : $cmd<br/>"; |
| 196 | 190 | return ; | ... | ... |
setup/wizard/lib/services/unixOpenOffice.php
| ... | ... | @@ -68,7 +68,7 @@ class unixOpenOffice extends unixService { |
| 68 | 68 | } |
| 69 | 69 | |
| 70 | 70 | public function load() { |
| 71 | - | |
| 71 | + | |
| 72 | 72 | $this->setPort("8100"); |
| 73 | 73 | $this->setHost("localhost"); |
| 74 | 74 | $this->setLog("openoffice.log"); |
| ... | ... | @@ -76,6 +76,8 @@ class unixOpenOffice extends unixService { |
| 76 | 76 | $this->setOption(); |
| 77 | 77 | } |
| 78 | 78 | |
| 79 | + | |
| 80 | + | |
| 79 | 81 | private function setPort($port = "8100") { |
| 80 | 82 | $this->port = $port; |
| 81 | 83 | } |
| ... | ... | @@ -156,7 +158,7 @@ class unixOpenOffice extends unixService { |
| 156 | 158 | public function start() { |
| 157 | 159 | $state = $this->status(); |
| 158 | 160 | if($state != 'STARTED') { |
| 159 | - $cmd = "nohup {$this->getBin()} ".$this->getOption()." > ".SYS_LOG_DIR."{$this->getLog()} 2>&1 & echo $!"; | |
| 161 | + $cmd = "nohup {$this->getBin()} ".$this->getOption()." > ".$this->outputDir."{$this->getLog()} 2>&1 & echo $!"; | |
| 160 | 162 | if(DEBUG) { |
| 161 | 163 | echo "Command : $cmd<br/>"; |
| 162 | 164 | return ; | ... | ... |
setup/wizard/lib/services/unixScheduler.php
| ... | ... | @@ -59,6 +59,7 @@ class unixScheduler extends unixService { |
| 59 | 59 | $this->setSchedulerDir(VAR_BIN_DIR); |
| 60 | 60 | $this->setSchedulerSourceLoc('schedulerTask.sh'); |
| 61 | 61 | } |
| 62 | + | |
| 62 | 63 | |
| 63 | 64 | function setSystemDir($systemDir) { |
| 64 | 65 | $this->systemDir = $systemDir; |
| ... | ... | @@ -155,10 +156,10 @@ class unixScheduler extends unixService { |
| 155 | 156 | $source = $this->getSchedulerSourceLoc(); |
| 156 | 157 | $this->writeSchedulerTask(); |
| 157 | 158 | if($source) { // Source |
| 158 | - $cmd = "nohup ".$source." > ".SYS_LOG_DIR."scheduler.log 2>&1 & echo $!"; | |
| 159 | + $cmd = "nohup ".$source." > ".$this->outputDir."scheduler.log 2>&1 & echo $!"; | |
| 159 | 160 | } else { // Could be Stack |
| 160 | 161 | $source = SYS_BIN_DIR.$this->schedulerSource; |
| 161 | - $cmd = "nohup ".$source." > ".SYS_LOG_DIR."scheduler.log 2>&1 & echo $!"; | |
| 162 | + $cmd = "nohup ".$source." > ".$this->outputDir."scheduler.log 2>&1 & echo $!"; | |
| 162 | 163 | } |
| 163 | 164 | if(DEBUG) { |
| 164 | 165 | echo "Command : $cmd<br/>"; | ... | ... |
setup/wizard/lib/services/unixService.php
| ... | ... | @@ -41,6 +41,30 @@ |
| 41 | 41 | */ |
| 42 | 42 | |
| 43 | 43 | class unixService extends Service { |
| 44 | + | |
| 45 | + public $outputDir; | |
| 46 | + public $varDir; | |
| 47 | + /** | |
| 48 | + * Reference to utility object | |
| 49 | + * | |
| 50 | + * @author KnowledgeTree Team | |
| 51 | + * @access public | |
| 52 | + * @param none | |
| 53 | + * @return string | |
| 54 | + */ | |
| 55 | + public $util; | |
| 56 | + | |
| 57 | + public function __construct() { | |
| 58 | + $this->util = new InstallUtil(); | |
| 59 | + $this->setSystemDirs(); | |
| 60 | + } | |
| 61 | + | |
| 62 | + function setSystemDirs() { | |
| 63 | + $conf = $this->util->getDataFromSession('configuration'); | |
| 64 | + $this->outputDir = $conf['paths']['logDirectory']['path'].DS; | |
| 65 | + $this->varDir = $conf['paths']['varDirectory']['path'].DS; | |
| 66 | + } | |
| 67 | + | |
| 44 | 68 | /** |
| 45 | 69 | * Retrieve Service name |
| 46 | 70 | * | ... | ... |
setup/wizard/lib/services/windowsLucene.php
| ... | ... | @@ -121,6 +121,7 @@ class windowsLucene extends windowsService { |
| 121 | 121 | */ |
| 122 | 122 | private $luceneDir; |
| 123 | 123 | |
| 124 | + | |
| 124 | 125 | /** |
| 125 | 126 | * Service name |
| 126 | 127 | * |
| ... | ... | @@ -140,7 +141,7 @@ class windowsLucene extends windowsService { |
| 140 | 141 | * @return void |
| 141 | 142 | */ |
| 142 | 143 | public function load() { |
| 143 | - $this->setSystemOutputDir(); | |
| 144 | + | |
| 144 | 145 | $this->setJavaBin(); |
| 145 | 146 | $this->setLuceneDIR(SYSTEM_DIR."bin".DS."luceneserver"); |
| 146 | 147 | $this->setLuceneExe("KTLuceneService.exe"); |
| ... | ... | @@ -151,12 +152,6 @@ class windowsLucene extends windowsService { |
| 151 | 152 | $this->setLuceneError("lucene-err.txt"); |
| 152 | 153 | } |
| 153 | 154 | |
| 154 | - function setSystemOutputDir() { | |
| 155 | - $conf = $this->util->getDataFromSession('configuration'); | |
| 156 | - print_r($conf); | |
| 157 | - die; | |
| 158 | -// $conf['path']['']; | |
| 159 | - } | |
| 160 | 155 | |
| 161 | 156 | /** |
| 162 | 157 | * Retrieve Status Service |
| ... | ... | @@ -195,8 +190,8 @@ class windowsLucene extends windowsService { |
| 195 | 190 | } |
| 196 | 191 | } |
| 197 | 192 | // TODO: Will not detect, but a java pre-check is done in services, before this |
| 198 | - if(file_exists(SYS_OUT_DIR.'outJVHome')) { | |
| 199 | - $this->javaBin = file_get_contents(SYS_OUT_DIR.'outJVHome'); | |
| 193 | + if(file_exists($this->varDir.'outJVHome')) { | |
| 194 | + $this->javaBin = file_get_contents($this->varDir.'outJVHome'); | |
| 200 | 195 | if($this->javaBin != '') return true; |
| 201 | 196 | } |
| 202 | 197 | |
| ... | ... | @@ -326,7 +321,7 @@ class windowsLucene extends windowsService { |
| 326 | 321 | * @return void |
| 327 | 322 | */ |
| 328 | 323 | private function setLuceneOut($luceneOut) { |
| 329 | - $this->luceneOut = SYS_LOG_DIR.$luceneOut; | |
| 324 | + $this->luceneOut = $this->outputDir.$luceneOut; | |
| 330 | 325 | } |
| 331 | 326 | |
| 332 | 327 | /** |
| ... | ... | @@ -350,7 +345,7 @@ class windowsLucene extends windowsService { |
| 350 | 345 | * @return void |
| 351 | 346 | */ |
| 352 | 347 | private function setLuceneError($luceneError) { |
| 353 | - $this->luceneError = SYS_LOG_DIR.$luceneError; | |
| 348 | + $this->luceneError = $this->outputDir.$luceneError; | |
| 354 | 349 | } |
| 355 | 350 | |
| 356 | 351 | /** | ... | ... |
setup/wizard/lib/services/windowsScheduler.php
| ... | ... | @@ -76,7 +76,7 @@ class windowsScheduler extends windowsService { |
| 76 | 76 | * @return string |
| 77 | 77 | */ |
| 78 | 78 | public $name = "KTSchedulerTest"; |
| 79 | - | |
| 79 | + | |
| 80 | 80 | /** |
| 81 | 81 | * Load defaults needed by service |
| 82 | 82 | * |
| ... | ... | @@ -86,12 +86,14 @@ class windowsScheduler extends windowsService { |
| 86 | 86 | * @return void |
| 87 | 87 | */ |
| 88 | 88 | function load() { |
| 89 | - $this->setSchedulerDIR(SYS_OUT_DIR."bin"); | |
| 89 | + $this->setSchedulerDIR($this->varDir."bin"); | |
| 90 | 90 | $this->setSchedulerScriptPath("taskrunner.bat"); |
| 91 | 91 | $this->setSchedulerSource("schedulerService.php"); |
| 92 | 92 | |
| 93 | 93 | } |
| 94 | 94 | |
| 95 | + | |
| 96 | + | |
| 95 | 97 | /** |
| 96 | 98 | * Set Scheduler Directory path |
| 97 | 99 | * |
| ... | ... | @@ -101,6 +103,9 @@ class windowsScheduler extends windowsService { |
| 101 | 103 | * @return string |
| 102 | 104 | */ |
| 103 | 105 | private function setSchedulerDIR($schedulerDIR) { |
| 106 | + if(!file_exists($schedulerDIR)) { | |
| 107 | + @mkdir($schedulerDIR); | |
| 108 | + } | |
| 104 | 109 | $this->schedulerDir = $schedulerDIR; |
| 105 | 110 | } |
| 106 | 111 | |
| ... | ... | @@ -243,10 +248,10 @@ class windowsScheduler extends windowsService { |
| 243 | 248 | |
| 244 | 249 | private function writeTaskRunner() { |
| 245 | 250 | // Check if bin is readable and writable |
| 246 | - if(is_readable(SYS_OUT_DIR."bin") && is_writable(SYS_OUT_DIR."bin")) { | |
| 247 | - if(DEBUG) { | |
| 248 | - echo "Create {$this->getSchedulerDir()}\\taskrunner.bat<br>"; | |
| 249 | - } | |
| 251 | + if(DEBUG) { | |
| 252 | + echo "Attempt to Create {$this->getSchedulerDir()}\\taskrunner.bat<br>"; | |
| 253 | + } | |
| 254 | + if(is_readable($this->varDir."bin") && is_writable($this->varDir."bin")) { | |
| 250 | 255 | $fp = fopen($this->getSchedulerDir().""."\\taskrunner.bat", "w+"); |
| 251 | 256 | $content = "@echo off \n"; |
| 252 | 257 | $content .= "\"".PHP_DIR."php.exe\" "."\"{$this->getSchedulerSource()}\""; | ... | ... |
setup/wizard/lib/services/windowsService.php
| ... | ... | @@ -59,11 +59,21 @@ class windowsService extends Service { |
| 59 | 59 | * @param none |
| 60 | 60 | * @return string |
| 61 | 61 | */ |
| 62 | - | |
| 63 | 62 | public $util; |
| 64 | 63 | |
| 64 | + public $outputDir; | |
| 65 | + | |
| 66 | + public $varDir; | |
| 67 | + | |
| 65 | 68 | public function __construct() { |
| 66 | 69 | $this->util = new InstallUtil(); |
| 70 | + $this->setSystemDirs(); | |
| 71 | + } | |
| 72 | + | |
| 73 | + function setSystemDirs() { | |
| 74 | + $conf = $this->util->getDataFromSession('configuration'); | |
| 75 | + $this->outputDir = $conf['paths']['logDirectory']['path'].DS; | |
| 76 | + $this->varDir = $conf['paths']['varDirectory']['path'].DS; | |
| 67 | 77 | } |
| 68 | 78 | |
| 69 | 79 | /** | ... | ... |
setup/wizard/path.php
| ... | ... | @@ -70,6 +70,9 @@ |
| 70 | 70 | define('SERVICE_LIB', WIZARD_LIB."services".DS); |
| 71 | 71 | define('CONF_DIR', WIZARD_DIR."config".DS); |
| 72 | 72 | define('RES_DIR', WIZARD_DIR."resources".DS); |
| 73 | + define('JS_DIR', RES_DIR."js".DS); | |
| 74 | + define('CSS_DIR', RES_DIR."css".DS); | |
| 75 | + define('IMG_DIR', RES_DIR."graphics".DS); | |
| 73 | 76 | define('STEP_DIR', WIZARD_DIR."steps".DS); |
| 74 | 77 | define('TEMP_DIR', WIZARD_DIR."templates".DS); |
| 75 | 78 | define('SHELL_DIR', WIZARD_DIR."shells".DS); | ... | ... |
setup/wizard/resources/wizard.css renamed to setup/wizard/resources/css/wizard.css
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | body { |
| 4 | 4 | background-attachment:scroll; |
| 5 | 5 | background-color:transparent; |
| 6 | - background-image:url("graphics/dame/loginbg.png"); | |
| 6 | + background-image:url("../graphics/dame/loginbg.png"); | |
| 7 | 7 | background-position:0 0; |
| 8 | 8 | background-repeat:repeat-x; |
| 9 | 9 | font-family:sans-serif; |
| ... | ... | @@ -71,7 +71,7 @@ select { |
| 71 | 71 | } |
| 72 | 72 | |
| 73 | 73 | #header { |
| 74 | - background: transparent url("graphics/dame/installer_head.png") repeat scroll 0% 0%; | |
| 74 | + background: transparent url("../graphics/dame/installer_head.png") repeat scroll 0% 0%; | |
| 75 | 75 | text-align: right; |
| 76 | 76 | font-size: 100%; |
| 77 | 77 | color: rgb(167, 167, 167); |
| ... | ... | @@ -82,12 +82,12 @@ select { |
| 82 | 82 | } |
| 83 | 83 | |
| 84 | 84 | #wrapper { |
| 85 | - /*background: white url("graphics/background.gif") repeat-y left;*/ | |
| 85 | + /*background: white url("../graphics/background.gif") repeat-y left;*/ | |
| 86 | 86 | } |
| 87 | 87 | |
| 88 | 88 | #container { |
| 89 | 89 | width: 100%; |
| 90 | - background: white url("graphics/background.gif") repeat-y left; | |
| 90 | + background: white url("../graphics/background.gif") repeat-y left; | |
| 91 | 91 | float: right; |
| 92 | 92 | } |
| 93 | 93 | |
| ... | ... | @@ -175,7 +175,7 @@ select { |
| 175 | 175 | } |
| 176 | 176 | |
| 177 | 177 | #footer { |
| 178 | - background-image:url("graphics/dame/navbar.png"); | |
| 178 | + background-image:url("../graphics/dame/navbar.png"); | |
| 179 | 179 | height:35px; |
| 180 | 180 | } |
| 181 | 181 | |
| ... | ... | @@ -187,7 +187,7 @@ select { |
| 187 | 187 | /* Content Styles */ |
| 188 | 188 | |
| 189 | 189 | .logo { |
| 190 | - background: url("graphics/logo.png") no-repeat; | |
| 190 | + background: url("../graphics/logo.png") no-repeat; | |
| 191 | 191 | background-position: top left; |
| 192 | 192 | height: 50px; |
| 193 | 193 | width: 200px; |
| ... | ... | @@ -207,7 +207,7 @@ select { |
| 207 | 207 | } |
| 208 | 208 | |
| 209 | 209 | .indicator a { |
| 210 | - background:url("graphics/dame/tick1.png") no-repeat left; | |
| 210 | + background:url("../graphics/dame/tick1.png") no-repeat left; | |
| 211 | 211 | padding-top:15px; |
| 212 | 212 | padding-bottom:10px; |
| 213 | 213 | padding-left:30px; |
| ... | ... | @@ -215,7 +215,7 @@ select { |
| 215 | 215 | } |
| 216 | 216 | |
| 217 | 217 | .active { |
| 218 | - background:url("graphics/dame/tick1.png") no-repeat left; | |
| 218 | + background:url("../graphics/dame/tick1.png") no-repeat left; | |
| 219 | 219 | padding-top:15px; |
| 220 | 220 | padding-bottom:10px; |
| 221 | 221 | padding-left:30px; |
| ... | ... | @@ -223,7 +223,7 @@ select { |
| 223 | 223 | } |
| 224 | 224 | |
| 225 | 225 | .inactive { |
| 226 | - background:url("graphics/dame/tick2.png") no-repeat left; | |
| 226 | + background:url("../graphics/dame/tick2.png") no-repeat left; | |
| 227 | 227 | padding-top:15px; |
| 228 | 228 | padding-bottom:10px; |
| 229 | 229 | padding-left:30px; |
| ... | ... | @@ -231,7 +231,7 @@ select { |
| 231 | 231 | } |
| 232 | 232 | |
| 233 | 233 | .current { |
| 234 | - background:url("graphics/dame/dot.png") no-repeat left; | |
| 234 | + background:url("../graphics/dame/dot.png") no-repeat left; | |
| 235 | 235 | padding-top:15px; |
| 236 | 236 | padding-bottom:10px; |
| 237 | 237 | padding-left:30px; |
| ... | ... | @@ -239,20 +239,20 @@ select { |
| 239 | 239 | } |
| 240 | 240 | |
| 241 | 241 | .tick { |
| 242 | - background: url("graphics/tick.png") no-repeat; | |
| 242 | + background: url("../graphics/tick.png") no-repeat; | |
| 243 | 243 | height: 16px; |
| 244 | 244 | width: 16px; |
| 245 | 245 | } |
| 246 | 246 | |
| 247 | 247 | .cross { |
| 248 | - background: url("graphics/cross.png") no-repeat; | |
| 248 | + background: url("../graphics/cross.png") no-repeat; | |
| 249 | 249 | height: 16px; |
| 250 | 250 | width: 16px; |
| 251 | 251 | color:#A30000; |
| 252 | 252 | } |
| 253 | 253 | |
| 254 | 254 | .cross_orange { |
| 255 | - background: url("graphics/cross_orange.png") no-repeat; | |
| 255 | + background: url("../graphics/cross_orange.png") no-repeat; | |
| 256 | 256 | height: 16px; |
| 257 | 257 | width: 16px; |
| 258 | 258 | color:#EC7725; |
| ... | ... | @@ -289,7 +289,7 @@ select { |
| 289 | 289 | } |
| 290 | 290 | |
| 291 | 291 | .back { |
| 292 | - background-image: url("graphics/dame/kt_gradient.jpg"); | |
| 292 | + background-image: url("../graphics/dame/kt_gradient.jpg"); | |
| 293 | 293 | background-repeat:repeat-x; |
| 294 | 294 | border:1px solid #CECECE; |
| 295 | 295 | float:left; |
| ... | ... | @@ -305,7 +305,7 @@ select { |
| 305 | 305 | } |
| 306 | 306 | |
| 307 | 307 | .step input { |
| 308 | - background-image: url("graphics/dame/kt_gradient.jpg"); | |
| 308 | + background-image: url("../graphics/dame/kt_gradient.jpg"); | |
| 309 | 309 | background-repeat:repeat-x; |
| 310 | 310 | border:1px solid #CECECE; |
| 311 | 311 | float:right; |
| ... | ... | @@ -340,7 +340,7 @@ select { |
| 340 | 340 | } |
| 341 | 341 | |
| 342 | 342 | .powered-by { |
| 343 | - background: url("graphics/powered-by-kt.png") no-repeat; | |
| 343 | + background: url("../graphics/powered-by-kt.png") no-repeat; | |
| 344 | 344 | background-position: center left; |
| 345 | 345 | height: 50px; |
| 346 | 346 | width: 140px; |
| ... | ... | @@ -478,7 +478,7 @@ td.dir_description { |
| 478 | 478 | } |
| 479 | 479 | |
| 480 | 480 | .big_ok { |
| 481 | - background: url("graphics/big-ok.png") no-repeat; | |
| 481 | + background: url("../graphics/big-ok.png") no-repeat; | |
| 482 | 482 | padding:4px; |
| 483 | 483 | /*width:16px; |
| 484 | 484 | height:16px; |
| ... | ... | @@ -505,7 +505,7 @@ td.dir_description { |
| 505 | 505 | } |
| 506 | 506 | |
| 507 | 507 | #tooltips { |
| 508 | - background: url("graphics/question.gif") no-repeat; | |
| 508 | + background: url("../graphics/question.gif") no-repeat; | |
| 509 | 509 | width:16px; |
| 510 | 510 | height:16px; |
| 511 | 511 | cursor:pointer; | ... | ... |
setup/wizard/resources/form.js renamed to setup/wizard/resources/js/form.js
setup/wizard/resources/jquery.blockUI.js renamed to setup/wizard/resources/js/jquery.blockUI.js
setup/wizard/resources/jquery.form.js renamed to setup/wizard/resources/js/jquery.form.js
setup/wizard/resources/js/jquery.hotkeys.js
0 → 100644
| 1 | +/* | |
| 2 | +(c) Copyrights 2007 - 2008 | |
| 3 | + | |
| 4 | +Original idea by by Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/ | |
| 5 | + | |
| 6 | +jQuery Plugin by Tzury Bar Yochay | |
| 7 | +tzury.by@gmail.com | |
| 8 | +http://evalinux.wordpress.com | |
| 9 | +http://facebook.com/profile.php?id=513676303 | |
| 10 | + | |
| 11 | +Project's sites: | |
| 12 | +http://code.google.com/p/js-hotkeys/ | |
| 13 | +http://github.com/tzuryby/hotkeys/tree/master | |
| 14 | + | |
| 15 | +License: same as jQuery license. | |
| 16 | + | |
| 17 | +USAGE: | |
| 18 | + // simple usage | |
| 19 | + $(document).bind('keydown', 'Ctrl+c', function(){ alert('copy anyone?');}); | |
| 20 | + | |
| 21 | + // special options such as disableInIput | |
| 22 | + $(document).bind('keydown', {combi:'Ctrl+x', disableInInput: true} , function() {}); | |
| 23 | + | |
| 24 | +Note: | |
| 25 | + This plugin wraps the following jQuery methods: $.fn.find, $.fn.bind and $.fn.unbind | |
| 26 | + | |
| 27 | +*/ | |
| 28 | + | |
| 29 | + | |
| 30 | +(function (jQuery){ | |
| 31 | + // keep reference to the original $.fn.bind and $.fn.unbind | |
| 32 | + jQuery.fn.__bind__ = jQuery.fn.bind; | |
| 33 | + jQuery.fn.__unbind__ = jQuery.fn.unbind; | |
| 34 | + jQuery.fn.__find__ = jQuery.fn.find; | |
| 35 | + | |
| 36 | + var hotkeys = { | |
| 37 | + version: '0.7.8', | |
| 38 | + override: /keydown|keypress|keyup/g, | |
| 39 | + triggersMap: {}, | |
| 40 | + | |
| 41 | + specialKeys: { 27: 'esc', 9: 'tab', 32:'space', 13: 'return', 8:'backspace', 145: 'scroll', | |
| 42 | + 20: 'capslock', 144: 'numlock', 19:'pause', 45:'insert', 36:'home', 46:'del', | |
| 43 | + 35:'end', 33: 'pageup', 34:'pagedown', 37:'left', 38:'up', 39:'right',40:'down', | |
| 44 | + 112:'f1',113:'f2', 114:'f3', 115:'f4', 116:'f5', 117:'f6', 118:'f7', 119:'f8', | |
| 45 | + 120:'f9', 121:'f10', 122:'f11', 123:'f12' }, | |
| 46 | + | |
| 47 | + shiftNums: { "`":"~", "1":"!", "2":"@", "3":"#", "4":"$", "5":"%", "6":"^", "7":"&", | |
| 48 | + "8":"*", "9":"(", "0":")", "-":"_", "=":"+", ";":":", "'":"\"", ",":"<", | |
| 49 | + ".":">", "/":"?", "\\":"|" }, | |
| 50 | + | |
| 51 | + newTrigger: function (type, combi, callback) { | |
| 52 | + // i.e. {'keyup': {'ctrl': {cb: callback, disableInInput: false}}} | |
| 53 | + var result = {}; | |
| 54 | + result[type] = {}; | |
| 55 | + result[type][combi] = {cb: callback, disableInInput: false}; | |
| 56 | + return result; | |
| 57 | + } | |
| 58 | + }; | |
| 59 | + // add firefox num pad char codes | |
| 60 | + if (jQuery.browser.mozilla){ | |
| 61 | + hotkeys.specialKeys = jQuery.extend(hotkeys.specialKeys, { 96: '0', 97:'1', 98: '2', 99: | |
| 62 | + '3', 100: '4', 101: '5', 102: '6', 103: '7', 104: '8', 105: '9' }); | |
| 63 | + } | |
| 64 | + | |
| 65 | + // a wrapper around of $.fn.find | |
| 66 | + // see more at: http://groups.google.com/group/jquery-en/browse_thread/thread/18f9825e8d22f18d | |
| 67 | + jQuery.fn.find = function( selector ) { | |
| 68 | + this.query=selector; | |
| 69 | + return jQuery.fn.__find__.apply(this, arguments); | |
| 70 | + }; | |
| 71 | + | |
| 72 | + jQuery.fn.unbind = function (type, combi, fn){ | |
| 73 | + if (jQuery.isFunction(combi)){ | |
| 74 | + fn = combi; | |
| 75 | + combi = null; | |
| 76 | + } | |
| 77 | + if (combi && typeof combi === 'string'){ | |
| 78 | + var selectorId = ((this.prevObject && this.prevObject.query) || (this[0].id && this[0].id) || this[0]).toString(); | |
| 79 | + var hkTypes = type.split(' '); | |
| 80 | + for (var x=0; x<hkTypes.length; x++){ | |
| 81 | + delete hotkeys.triggersMap[selectorId][hkTypes[x]][combi]; | |
| 82 | + } | |
| 83 | + } | |
| 84 | + // call jQuery original unbind | |
| 85 | + return this.__unbind__(type, fn); | |
| 86 | + }; | |
| 87 | + | |
| 88 | + jQuery.fn.bind = function(type, data, fn){ | |
| 89 | + // grab keyup,keydown,keypress | |
| 90 | + var handle = type.match(hotkeys.override); | |
| 91 | + | |
| 92 | + if (jQuery.isFunction(data) || !handle){ | |
| 93 | + // call jQuery.bind only | |
| 94 | + return this.__bind__(type, data, fn); | |
| 95 | + } | |
| 96 | + else{ | |
| 97 | + // split the job | |
| 98 | + var result = null, | |
| 99 | + // pass the rest to the original $.fn.bind | |
| 100 | + pass2jq = jQuery.trim(type.replace(hotkeys.override, '')); | |
| 101 | + | |
| 102 | + // see if there are other types, pass them to the original $.fn.bind | |
| 103 | + if (pass2jq){ | |
| 104 | + // call original jQuery.bind() | |
| 105 | + result = this.__bind__(pass2jq, data, fn); | |
| 106 | + } | |
| 107 | + | |
| 108 | + if (typeof data === "string"){ | |
| 109 | + data = {'combi': data}; | |
| 110 | + } | |
| 111 | + if(data.combi){ | |
| 112 | + for (var x=0; x < handle.length; x++){ | |
| 113 | + var eventType = handle[x]; | |
| 114 | + var combi = data.combi.toLowerCase(), | |
| 115 | + trigger = hotkeys.newTrigger(eventType, combi, fn), | |
| 116 | + selectorId = ((this.prevObject && this.prevObject.query) || (this[0].id && this[0].id) || this[0]).toString(); | |
| 117 | + | |
| 118 | + //trigger[eventType][combi].propagate = data.propagate; | |
| 119 | + trigger[eventType][combi].disableInInput = data.disableInInput; | |
| 120 | + | |
| 121 | + // first time selector is bounded | |
| 122 | + if (!hotkeys.triggersMap[selectorId]) { | |
| 123 | + hotkeys.triggersMap[selectorId] = trigger; | |
| 124 | + } | |
| 125 | + // first time selector is bounded with this type | |
| 126 | + else if (!hotkeys.triggersMap[selectorId][eventType]) { | |
| 127 | + hotkeys.triggersMap[selectorId][eventType] = trigger[eventType]; | |
| 128 | + } | |
| 129 | + // make trigger point as array so more than one handler can be bound | |
| 130 | + var mapPoint = hotkeys.triggersMap[selectorId][eventType][combi]; | |
| 131 | + if (!mapPoint){ | |
| 132 | + hotkeys.triggersMap[selectorId][eventType][combi] = [trigger[eventType][combi]]; | |
| 133 | + } | |
| 134 | + else if (mapPoint.constructor !== Array){ | |
| 135 | + hotkeys.triggersMap[selectorId][eventType][combi] = [mapPoint]; | |
| 136 | + } | |
| 137 | + else { | |
| 138 | + hotkeys.triggersMap[selectorId][eventType][combi][mapPoint.length] = trigger[eventType][combi]; | |
| 139 | + } | |
| 140 | + | |
| 141 | + // add attribute and call $.event.add per matched element | |
| 142 | + this.each(function(){ | |
| 143 | + // jQuery wrapper for the current element | |
| 144 | + var jqElem = jQuery(this); | |
| 145 | + | |
| 146 | + // element already associated with another collection | |
| 147 | + if (jqElem.attr('hkId') && jqElem.attr('hkId') !== selectorId){ | |
| 148 | + selectorId = jqElem.attr('hkId') + ";" + selectorId; | |
| 149 | + } | |
| 150 | + jqElem.attr('hkId', selectorId); | |
| 151 | + }); | |
| 152 | + result = this.__bind__(handle.join(' '), data, hotkeys.handler) | |
| 153 | + } | |
| 154 | + } | |
| 155 | + return result; | |
| 156 | + } | |
| 157 | + }; | |
| 158 | + // work-around for opera and safari where (sometimes) the target is the element which was last | |
| 159 | + // clicked with the mouse and not the document event it would make sense to get the document | |
| 160 | + hotkeys.findElement = function (elem){ | |
| 161 | + if (!jQuery(elem).attr('hkId')){ | |
| 162 | + if (jQuery.browser.opera || jQuery.browser.safari){ | |
| 163 | + while (!jQuery(elem).attr('hkId') && elem.parentNode){ | |
| 164 | + elem = elem.parentNode; | |
| 165 | + } | |
| 166 | + } | |
| 167 | + } | |
| 168 | + return elem; | |
| 169 | + }; | |
| 170 | + // the event handler | |
| 171 | + hotkeys.handler = function(event) { | |
| 172 | + var target = hotkeys.findElement(event.currentTarget), | |
| 173 | + jTarget = jQuery(target), | |
| 174 | + ids = jTarget.attr('hkId'); | |
| 175 | + | |
| 176 | + if(ids){ | |
| 177 | + ids = ids.split(';'); | |
| 178 | + var code = event.which, | |
| 179 | + type = event.type, | |
| 180 | + special = hotkeys.specialKeys[code], | |
| 181 | + // prevent f5 overlapping with 't' (or f4 with 's', etc.) | |
| 182 | + character = !special && String.fromCharCode(code).toLowerCase(), | |
| 183 | + shift = event.shiftKey, | |
| 184 | + ctrl = event.ctrlKey, | |
| 185 | + // patch for jquery 1.2.5 && 1.2.6 see more at: | |
| 186 | + // http://groups.google.com/group/jquery-en/browse_thread/thread/83e10b3bb1f1c32b | |
| 187 | + alt = event.altKey || event.originalEvent.altKey, | |
| 188 | + mapPoint = null; | |
| 189 | + | |
| 190 | + for (var x=0; x < ids.length; x++){ | |
| 191 | + if (hotkeys.triggersMap[ids[x]][type]){ | |
| 192 | + mapPoint = hotkeys.triggersMap[ids[x]][type]; | |
| 193 | + break; | |
| 194 | + } | |
| 195 | + } | |
| 196 | + | |
| 197 | + //find by: id.type.combi.options | |
| 198 | + if (mapPoint){ | |
| 199 | + var trigger; | |
| 200 | + // event type is associated with the hkId | |
| 201 | + if(!shift && !ctrl && !alt) { // No Modifiers | |
| 202 | + trigger = mapPoint[special] || (character && mapPoint[character]); | |
| 203 | + } | |
| 204 | + else{ | |
| 205 | + // check combinations (alt|ctrl|shift+anything) | |
| 206 | + var modif = ''; | |
| 207 | + if(alt) modif +='alt+'; | |
| 208 | + if(ctrl) modif+= 'ctrl+'; | |
| 209 | + if(shift) modif += 'shift+'; | |
| 210 | + | |
| 211 | + // modifiers + special keys or modifiers + character or modifiers + shift character or just shift character | |
| 212 | + trigger = mapPoint[modif+special]; | |
| 213 | + if (!trigger){ | |
| 214 | + if (character){ | |
| 215 | + trigger = mapPoint[modif+character] | |
| 216 | + || mapPoint[modif+hotkeys.shiftNums[character]] | |
| 217 | + // '$' can be triggered as 'Shift+4' or 'Shift+$' or just '$' | |
| 218 | + || (modif === 'shift+' && mapPoint[hotkeys.shiftNums[character]]); | |
| 219 | + } | |
| 220 | + } | |
| 221 | + } | |
| 222 | + if (trigger){ | |
| 223 | + var result = false; | |
| 224 | + for (var x=0; x < trigger.length; x++){ | |
| 225 | + if(trigger[x].disableInInput){ | |
| 226 | + // double check event.currentTarget and event.target | |
| 227 | + var elem = jQuery(event.target); | |
| 228 | + if (jTarget.is("input") || jTarget.is("textarea") | |
| 229 | + || elem.is("input") || elem.is("textarea")) { | |
| 230 | + return true; | |
| 231 | + } | |
| 232 | + } | |
| 233 | + // call the registered callback function | |
| 234 | + result = result || trigger[x].cb.apply(this, [event]); | |
| 235 | + } | |
| 236 | + return result; | |
| 237 | + } | |
| 238 | + } | |
| 239 | + } | |
| 240 | + }; | |
| 241 | + // place it under window so it can be extended and overridden by others | |
| 242 | + window.hotkeys = hotkeys; | |
| 243 | + return jQuery; | |
| 244 | +})(jQuery); | ... | ... |
setup/wizard/resources/jquery.js renamed to setup/wizard/resources/js/jquery.js
setup/wizard/resources/wizard.js renamed to setup/wizard/resources/js/wizard.js
setup/wizard/steps/configuration.php
| ... | ... | @@ -294,8 +294,7 @@ class configuration extends Step |
| 294 | 294 | * @param array $dbconf |
| 295 | 295 | * @return array |
| 296 | 296 | */ |
| 297 | - public function registerDBConfig($server, $dbconf) { | |
| 298 | - // Adjust server variables | |
| 297 | + public function registerDBConfig($server, $dbconf) { // Adjust server variables | |
| 299 | 298 | $server['dbName'] = array('where'=>'file', 'name'=>ucwords($dbconf['dname']), 'section'=>'db', 'value'=>$dbconf['dname'], 'setting'=>'dbName'); |
| 300 | 299 | $server['dbUser'] = array('where'=>'file', 'name'=>ucwords($dbconf['duname']), 'section'=>'db', 'value'=>$dbconf['duname'], 'setting'=>'dbUser'); |
| 301 | 300 | $server['dbPass'] = array('where'=>'file', 'name'=>ucwords($dbconf['dpassword']), 'section'=>'db', 'value'=>$dbconf['dpassword'], 'setting'=>'dbPass'); |
| ... | ... | @@ -306,6 +305,17 @@ class configuration extends Step |
| 306 | 305 | return $server; |
| 307 | 306 | } |
| 308 | 307 | |
| 308 | + private function registerDirs() { // Adjust directories variables | |
| 309 | + $this->readConfigPath(); | |
| 310 | + $dirs = $this->getFromConfigPath(); | |
| 311 | + $directories['varDirectory'] = array('section'=>'urls', 'value'=>mysql_real_escape_string($dirs['varDirectory']['path']), 'setting'=>'varDirectory'); | |
| 312 | + $directories['logDirectory'] = array('section'=>'urls', 'value'=>mysql_real_escape_string($dirs['logDirectory']['path']), 'setting'=>'logDirectory'); | |
| 313 | + $directories['documentRoot'] = array('section'=>'urls', 'value'=>mysql_real_escape_string($dirs['documentRoot']['path']), 'setting'=>'documentRoot'); | |
| 314 | + $directories['uiDirectory'] = array('section'=>'urls', 'value'=>'${fileSystemRoot}/presentation/lookAndFeel/knowledgeTree', 'setting'=>'uiDirectory'); | |
| 315 | + $directories['tmpDirectory'] = array('section'=>'urls', 'value'=>mysql_real_escape_string($dirs['tmpDirectory']['path']), 'setting'=>'tmpDirectory'); | |
| 316 | + | |
| 317 | + return $directories; | |
| 318 | + } | |
| 309 | 319 | /** |
| 310 | 320 | * Perform the installation associated with the step. |
| 311 | 321 | * Variables required by the installation are stored within the session. |
| ... | ... | @@ -315,13 +325,10 @@ class configuration extends Step |
| 315 | 325 | */ |
| 316 | 326 | public function installStep() |
| 317 | 327 | { |
| 318 | - // get data from the server | |
| 319 | - $conf = $this->getDataFromSession("configuration"); | |
| 328 | + $conf = $this->getDataFromSession("configuration"); // get data from the server | |
| 320 | 329 | $server = $conf['server']; |
| 321 | 330 | $paths = $conf['paths']; |
| 322 | - | |
| 323 | - // initialise writing to config.ini | |
| 324 | - $this->readConfigPath(); | |
| 331 | + $this->readConfigPath(); // initialise writing to config.ini | |
| 325 | 332 | $dirs = $this->getFromConfigPath(); |
| 326 | 333 | if(isset($this->confpaths['configIni'])) { // Check if theres a config path |
| 327 | 334 | $configPath = realpath("../../{$this->confpaths['configIni']}"); // Relative to Config Path File |
| ... | ... | @@ -335,26 +342,50 @@ class configuration extends Step |
| 335 | 342 | if(file_exists($configPath)) { |
| 336 | 343 | $ini = new Ini($configPath); |
| 337 | 344 | } |
| 345 | + $this->writeUrlSection($ini); | |
| 346 | + $this->writeDBSection($ini, $server); | |
| 347 | + $this->writeDBPathSection($ini, $paths); | |
| 348 | + if(!$ini === false){ // write out the config.ini file | |
| 349 | + $ini->write(); | |
| 350 | + } | |
| 351 | + $this->_dbhandler->close(); // close the database connection | |
| 352 | + $this->writeConfigPath(); // Write config file | |
| 353 | + } | |
| 338 | 354 | |
| 339 | - // initialise the db connection | |
| 340 | - | |
| 341 | - // retrieve database information from session | |
| 342 | - $dbconf = $this->getDataFromSession("database"); | |
| 343 | - | |
| 344 | - // make db connection | |
| 345 | - $this->_dbhandler->load($dbconf['dhost'], $dbconf['duname'], $dbconf['dpassword'], $dbconf['dname']); | |
| 346 | - | |
| 347 | - // add db config to server variables | |
| 348 | - $server = $this->registerDBConfig($server, $dbconf); | |
| 349 | - | |
| 355 | + private function writeUrlSection($ini) { | |
| 356 | + $directories = $this->registerDirs(); | |
| 357 | + foreach($directories as $item) { // write server settings to config_settings table and config.ini | |
| 358 | + if(!$ini === false) { | |
| 359 | + $ini->updateItem($item['section'], $item['setting'], $item['value']); | |
| 360 | + } | |
| 361 | + } | |
| 362 | + } | |
| 363 | + | |
| 364 | + private function writeDBPathSection($ini, $paths) { | |
| 365 | + $table = 'config_settings'; | |
| 366 | + if(is_array($paths)) { // write the paths to the config_settings table | |
| 367 | + foreach ($paths as $item){ | |
| 368 | + if(empty($item['setting'])){ | |
| 369 | + continue; | |
| 370 | + } | |
| 371 | + $value = mysql_real_escape_string($item['path']); | |
| 372 | + $setting = mysql_real_escape_string($item['setting']); | |
| 373 | + $sql = "UPDATE {$table} SET value = '{$value}' WHERE item = '{$setting}'"; | |
| 374 | + $this->_dbhandler->query($sql); | |
| 375 | + } | |
| 376 | + } | |
| 377 | + } | |
| 378 | + | |
| 379 | + private function writeDBSection($ini, $server) { | |
| 380 | + $dbconf = $this->getDataFromSession("database"); // retrieve database information from session | |
| 381 | + $this->_dbhandler->load($dbconf['dhost'], $dbconf['duname'], $dbconf['dpassword'], $dbconf['dname']); // initialise the db connection | |
| 382 | + $server = $this->registerDBConfig($server, $dbconf); // add db config to server variables | |
| 350 | 383 | $table = 'config_settings'; |
| 351 | - // write server settings to config_settings table and config.ini | |
| 352 | - foreach($server as $item){ | |
| 353 | - | |
| 354 | - switch($item['where']){ | |
| 384 | + foreach($server as $item) { // write server settings to config_settings table and config.ini | |
| 385 | + switch($item['where']) { | |
| 355 | 386 | case 'file': |
| 356 | 387 | $value = $item['value']; |
| 357 | - if($value == 'yes'){ | |
| 388 | + if($value == 'yes') { | |
| 358 | 389 | $value = 'true'; |
| 359 | 390 | } |
| 360 | 391 | if($value == 'no'){ |
| ... | ... | @@ -364,7 +395,6 @@ class configuration extends Step |
| 364 | 395 | $ini->updateItem($item['section'], $item['setting'], $value); |
| 365 | 396 | } |
| 366 | 397 | break; |
| 367 | - | |
| 368 | 398 | case 'db': |
| 369 | 399 | $value = mysql_real_escape_string($item['value']); |
| 370 | 400 | $setting = mysql_real_escape_string($item['setting']); |
| ... | ... | @@ -374,34 +404,8 @@ class configuration extends Step |
| 374 | 404 | break; |
| 375 | 405 | } |
| 376 | 406 | } |
| 377 | - | |
| 378 | - // write the paths to the config_settings table | |
| 379 | - if(is_array($paths)) { | |
| 380 | - foreach ($paths as $item){ | |
| 381 | - if(empty($item['setting'])){ | |
| 382 | - continue; | |
| 383 | - } | |
| 384 | - | |
| 385 | - $value = mysql_real_escape_string($item['path']); | |
| 386 | - $setting = mysql_real_escape_string($item['setting']); | |
| 387 | - | |
| 388 | - $sql = "UPDATE {$table} SET value = '{$value}' WHERE item = '{$setting}'"; | |
| 389 | - $this->_dbhandler->query($sql); | |
| 390 | - } | |
| 391 | - } | |
| 392 | - | |
| 393 | - // write out the config.ini file | |
| 394 | - if(!$ini === false){ | |
| 395 | - $ini->write(); | |
| 396 | - } | |
| 397 | - | |
| 398 | - // close the database connection | |
| 399 | - $this->_dbhandler->close(); | |
| 400 | - | |
| 401 | - // Write config file | |
| 402 | - $this->writeConfigPath(); | |
| 403 | 407 | } |
| 404 | - | |
| 408 | + | |
| 405 | 409 | /** |
| 406 | 410 | * Get the server settings information |
| 407 | 411 | * |
| ... | ... | @@ -473,7 +477,10 @@ class configuration extends Step |
| 473 | 477 | if(WINDOWS_OS) |
| 474 | 478 | $path = preg_replace('/\//', '\\',$path); |
| 475 | 479 | $dirs[$key]['path'] = $path; |
| 476 | - $class = $this->util->checkPermission($path, $dir['create']); | |
| 480 | + if(isset($dir['file'])) | |
| 481 | + $class = $this->util->checkPermission($path, $dir['create'], true); | |
| 482 | + else | |
| 483 | + $class = $this->util->checkPermission($path, $dir['create']); | |
| 477 | 484 | if($class['class'] != 'tick') { |
| 478 | 485 | $this->temp_variables['paths_perms'] = $class['class']; |
| 479 | 486 | $this->done = false; |
| ... | ... | @@ -525,7 +532,7 @@ class configuration extends Step |
| 525 | 532 | array('name' => 'Log Directory', 'setting' => 'logDirectory', 'path' => $_POST['logDirectory'], 'create' => true), |
| 526 | 533 | array('name' => 'Temporary Directory', 'setting' => 'tmpDirectory', 'path' => $_POST['tmpDirectory'], 'create' => true), |
| 527 | 534 | array('name' => 'Uploads Directory', 'setting' => 'uploadDirectory', 'path' => $_POST['uploadDirectory'], 'create' => true), |
| 528 | - array('name' => 'Configuration File', 'setting' => 'configFile', 'path' => $_POST['configFile'], 'create' => false), | |
| 535 | + array('name' => 'Configuration File', 'setting' => 'configFile', 'path' => $_POST['configFile'], 'create' => false, 'file'=>true), | |
| 529 | 536 | ); |
| 530 | 537 | } |
| 531 | 538 | |
| ... | ... | @@ -540,17 +547,11 @@ class configuration extends Step |
| 540 | 547 | private function getFromConfigPath() { |
| 541 | 548 | $configs = array(); |
| 542 | 549 | if(isset($this->confpaths['configIni'])) { // Simple check to see if any paths were written |
| 543 | - $configPath = realpath("../../{$this->confpaths['configIni']}"); // Relative to Config Path File | |
| 544 | - if($configPath == '') { // Absolute path probably entered | |
| 545 | - $configPath = realpath("{$this->confpaths['configIni']}"); // Get absolute path | |
| 546 | - if($configPath == '') { | |
| 547 | - $configPath = realpath('../../config/config.ini'); | |
| 548 | - } | |
| 549 | - } | |
| 550 | + $configPath = $this->confpaths['configIni']; // Get absolute path | |
| 550 | 551 | } else { |
| 551 | 552 | $configPath = '${fileSystemRoot}/config/config.ini'; |
| 552 | 553 | } |
| 553 | - $configs['configFile'] = array('name' => 'Configuration File', 'setting' => 'configFile', 'path' => $configPath, 'create' => false); | |
| 554 | + $configs['configFile'] = array('name' => 'Configuration File', 'setting' => 'configFile', 'path' => $configPath, 'create' => false, 'file'=>true); | |
| 554 | 555 | if(isset($this->confpaths['Documents'])) { |
| 555 | 556 | $docsPath = $this->confpaths['Documents']; |
| 556 | 557 | } else { |
| ... | ... | @@ -610,7 +611,7 @@ class configuration extends Step |
| 610 | 611 | if(!$configPath) return false; |
| 611 | 612 | $ini = new Ini($configPath); |
| 612 | 613 | $data = $ini->getFileByLine(); |
| 613 | - $firstline = true; | |
| 614 | + $firstline = true; | |
| 614 | 615 | foreach ($data as $k=>$v) { |
| 615 | 616 | if($firstline) { // First line holds the var directory |
| 616 | 617 | $firstline = false; | ... | ... |
setup/wizard/template.php
| ... | ... | @@ -81,7 +81,7 @@ class Template |
| 81 | 81 | if($isA) { |
| 82 | 82 | $value = $value->fetch(); |
| 83 | 83 | } |
| 84 | - $this->template_vars[$name] = $value; | |
| 84 | + $this->template_vars[$name] = $value; | |
| 85 | 85 | } |
| 86 | 86 | |
| 87 | 87 | |
| ... | ... | @@ -99,7 +99,9 @@ class Template |
| 99 | 99 | if (!file_exists($file)) { |
| 100 | 100 | trigger_error('Template file '.$file.' does not exist ', E_USER_ERROR); |
| 101 | 101 | } |
| 102 | + $this->template_vars['html'] = new htmlHelper(); | |
| 102 | 103 | extract($this->template_vars); // Extract the vars to local namespace |
| 104 | + | |
| 103 | 105 | ob_start(); |
| 104 | 106 | include($file); |
| 105 | 107 | $contents = ob_get_contents(); | ... | ... |
setup/wizard/templates/complete.tpl
| ... | ... | @@ -126,4 +126,4 @@ |
| 126 | 126 | } |
| 127 | 127 | ?> |
| 128 | 128 | </form> |
| 129 | -<?php if (AJAX) { ?> <script type="text/javascript" src="resources/form.js"></script> <?php } ?> | |
| 130 | 129 | \ No newline at end of file |
| 130 | +<?php if (AJAX) { echo $html->js('form.js'); } ?> | |
| 131 | 131 | \ No newline at end of file | ... | ... |
setup/wizard/templates/configuration.tpl
| ... | ... | @@ -118,4 +118,4 @@ |
| 118 | 118 | <input type="submit" name="Previous" value="Previous" class="button_previous"/> |
| 119 | 119 | <input type="submit" name="Next" value="Next" class="button_next"/> |
| 120 | 120 | </form> |
| 121 | -<?php if (AJAX) { ?> <script type="text/javascript" src="resources/form.js"></script> <?php } ?> | |
| 121 | +<?php if (AJAX) { echo $html->js('form.js'); } ?> | ... | ... |
setup/wizard/templates/configuration_confirm.tpl
| ... | ... | @@ -94,4 +94,4 @@ |
| 94 | 94 | <input type="submit" name="Edit" value="Edit" class="button_previous"/> |
| 95 | 95 | <input type="submit" name="Confirm" value="Confirm" class="button_next"/> |
| 96 | 96 | </form> |
| 97 | -<?php if (AJAX) { ?> <script type="text/javascript" src="resources/form.js"></script> <?php } ?> | |
| 97 | +<?php if (AJAX) { echo $html->js('form.js'); } ?> | ... | ... |
setup/wizard/templates/database.tpl
| ... | ... | @@ -142,7 +142,7 @@ An second user is required for normal database interaction, the reading and writ |
| 142 | 142 | <input type="submit" name="Next" value="next" class="button_next"/> |
| 143 | 143 | </div> |
| 144 | 144 | </form> |
| 145 | -<?php if (AJAX) { ?> <script type="text/javascript" src="resources/form.js"></script> <?php } ?> | |
| 145 | +<?php if (AJAX) { echo $html->js('form.js'); } ?> | |
| 146 | 146 | <script type="text/javascript"> |
| 147 | 147 | $('#dname').focus(); |
| 148 | 148 | </script> |
| 149 | 149 | \ No newline at end of file | ... | ... |
setup/wizard/templates/database_confirm.tpl
| ... | ... | @@ -101,4 +101,4 @@ |
| 101 | 101 | <input type="submit" name="Edit" value="Edit" class="button_previous"/> |
| 102 | 102 | <input type="submit" name="Confirm" value="Confirm" class="button_next"/> |
| 103 | 103 | </form> |
| 104 | -<?php if (AJAX) { ?> <script type="text/javascript" src="resources/form.js"></script> <?php } ?> | |
| 105 | 104 | \ No newline at end of file |
| 105 | +<?php if (AJAX) { echo $html->js('form.js'); } ?> | |
| 106 | 106 | \ No newline at end of file | ... | ... |
setup/wizard/templates/dependencies.tpl
| ... | ... | @@ -151,4 +151,4 @@ |
| 151 | 151 | <input type="submit" name="Previous" value="Previous" class="button_previous"/> |
| 152 | 152 | <input type="submit" name="Next" value="Next" class="button_next"/> |
| 153 | 153 | </form> |
| 154 | -<?php if (AJAX) { ?> <script type="text/javascript" src="resources/form.js"></script> <?php } ?> | |
| 155 | 154 | \ No newline at end of file |
| 155 | +<?php if (AJAX) { echo $html->js('form.js'); } ?> | |
| 156 | 156 | \ No newline at end of file | ... | ... |
setup/wizard/templates/error.tpl
| ... | ... | @@ -2,9 +2,9 @@ |
| 2 | 2 | <html> |
| 3 | 3 | <head> |
| 4 | 4 | <title>KnowledgeTree Installer</title> |
| 5 | - <script type="text/javascript" src="resources/jquery-tooltip/lib/jquery.js"></script> | |
| 6 | - <script type="text/javascript" src="resources/wizard.js" ></script> | |
| 7 | - <link rel="stylesheet" type="text/css" href="resources/wizard.css" /> | |
| 5 | + <script type="text/javascript" src="resources/js/jquery-tooltip/lib/jquery.js"></script> | |
| 6 | + <script type="text/javascript" src="resources/js/wizard.js" ></script> | |
| 7 | + <link rel="stylesheet" type="text/css" href="resources/css/wizard.css" /> | |
| 8 | 8 | |
| 9 | 9 | </head> |
| 10 | 10 | ... | ... |
setup/wizard/templates/install.tpl
| ... | ... | @@ -7,9 +7,9 @@ |
| 7 | 7 | <p class="empty_space"> |
| 8 | 8 | The wizard will now complete the installation and run a final check on the system. |
| 9 | 9 | </p> |
| 10 | - <div class="demo"><img src="resources/graphics/kt_browse.png" /></div> | |
| 10 | + <div class="demo"><?php echo $html->image('dame/kt_browse.png'); ?></div> | |
| 11 | 11 | </div> |
| 12 | 12 | <input type="submit" name="Previous" value="Previous" class="button_previous"/> |
| 13 | 13 | <input type="submit" name="Install" value="Install" class="button_next"/> |
| 14 | 14 | </form> |
| 15 | -<?php if (AJAX) { ?> <script type="text/javascript" src="resources/form.js"></script> <?php } ?> | |
| 16 | 15 | \ No newline at end of file |
| 16 | +<?php if (AJAX) { echo $html->js('form.js'); } ?> | |
| 17 | 17 | \ No newline at end of file | ... | ... |
setup/wizard/templates/license.tpl
| ... | ... | @@ -334,7 +334,7 @@ govern. |
| 334 | 334 | </div> |
| 335 | 335 | <input id="accept" type="hidden" name="license" value=""/> |
| 336 | 336 | <input type="submit" name="Previous" value="Previous" class="button_previous"/> |
| 337 | + <input type="submit" name="Next" value="I Agree" onclick="javascript:{document.getElementById('accept').value = 1;}" class="button_next"/> | |
| 337 | 338 | <input type="submit" name="Next" value="I Disagree" onclick="javascript:{document.getElementById('accept').value = 0;}" class="button_next"/> |
| 338 | - <input type="submit" name="Next" value="I Agree" onclick="javascript:{document.getElementById('accept').value = 1;}" class="button_next"/> | |
| 339 | 339 | </form> |
| 340 | -<?php if (AJAX) { ?> <script type="text/javascript" src="resources/form.js"></script> <?php } ?> | |
| 341 | 340 | \ No newline at end of file |
| 341 | +<?php if (AJAX) { echo $html->js('form.js'); } ?> | |
| 342 | 342 | \ No newline at end of file | ... | ... |
setup/wizard/templates/registration.tpl
| ... | ... | @@ -29,7 +29,7 @@ |
| 29 | 29 | <td rowspan='6' width='5%'> </td> |
| 30 | 30 | <td><input value="<?php echo $first_name; ?>" name='submitted[first_name]' id='first' size='<?php echo $input_width; ?>' style="float:left;"/></td> |
| 31 | 31 | <td rowspan='6' width='5%'> </td> |
| 32 | - <td rowspan='6'> <img src='resources/graphics/dropbox.png' /> </td> | |
| 32 | + <td rowspan='6'> <?php echo $html->image('dropbox.png'); ?> </td> | |
| 33 | 33 | </tr> |
| 34 | 34 | |
| 35 | 35 | <tr> |
| ... | ... | @@ -107,7 +107,7 @@ |
| 107 | 107 | <input type="submit" name="Previous" value="Previous" onclick="w.pClick()" class="button_previous"/> |
| 108 | 108 | <input type="submit" name="Next" value="Register" onclick="w.nClick()" class="button_next"/> |
| 109 | 109 | </form> |
| 110 | -<?php if (AJAX) { ?> <script type="text/javascript" src="resources/form.js"></script> <?php } ?> | |
| 110 | +<?php if (AJAX) { echo $html->js('form.js'); } ?> | |
| 111 | 111 | <script type="text/javascript"> |
| 112 | 112 | $('#first').focus(); |
| 113 | 113 | </script> |
| 114 | 114 | \ No newline at end of file | ... | ... |
setup/wizard/templates/registration_confirm.tpl
| ... | ... | @@ -6,9 +6,9 @@ |
| 6 | 6 | <p class="empty_space"> |
| 7 | 7 | Thank you for signing up. You'll receive an email from us shortly with download instructions for the KnowledgeTree Drop Box software. |
| 8 | 8 | </p> |
| 9 | - <div class="demo"><img src="resources/graphics/kt_browse.png" /></div> | |
| 9 | + <div class="demo"><?php echo $html->image('kt_browse.png'); ?></div> | |
| 10 | 10 | </div> |
| 11 | 11 | <input type="submit" name="Previous" value="Previous" class="button_previous"/> |
| 12 | 12 | <input type="submit" name="Confirm" value="Next" class="button_next"/> |
| 13 | 13 | </form> |
| 14 | -<?php if (AJAX) { ?> <script type="text/javascript" src="resources/form.js"></script> <?php } ?> | |
| 15 | 14 | \ No newline at end of file |
| 15 | +<?php if (AJAX) { echo $html->js('form.js'); } ?> | |
| 16 | 16 | \ No newline at end of file | ... | ... |
setup/wizard/templates/services.tpl
| ... | ... | @@ -196,4 +196,4 @@ |
| 196 | 196 | <input type="submit" name="Previous" value="Previous" class="button_previous"/> |
| 197 | 197 | <input type="submit" name="Next" value="Next" class="button_next"/> |
| 198 | 198 | </form> |
| 199 | -<?php if (AJAX) { ?> <script type="text/javascript" src="resources/form.js"></script> <?php } ?> | |
| 200 | 199 | \ No newline at end of file |
| 200 | +<?php if (AJAX) { echo $html->js('form.js'); } ?> | |
| 201 | 201 | \ No newline at end of file | ... | ... |
setup/wizard/templates/welcome.tpl
| ... | ... | @@ -4,9 +4,9 @@ |
| 4 | 4 | <br/> |
| 5 | 5 | <br/> |
| 6 | 6 | <p class="empty_space"> This wizard will lead you through the steps needed to install and configure KnowledgeTree on your server. </p> |
| 7 | - <div class="demo"><img src="resources/graphics/kt_browse.png" /></div> | |
| 7 | + <div class="demo"><?php echo $html->image('kt_browse.png'); ?> </div> | |
| 8 | 8 | </div> |
| 9 | 9 | <input type="submit" name="Next" value="Next" class="button_next"/> |
| 10 | 10 | <!-- <input type="submit" name="Migrate" value="Migrate" class="button_next"/>--> |
| 11 | 11 | </form> |
| 12 | -<?php if (AJAX) { ?> <script type="text/javascript" src="resources/form.js"></script> <?php } ?> | |
| 13 | 12 | \ No newline at end of file |
| 13 | +<?php if (AJAX) { echo $html->js('form.js'); } ?> | |
| 14 | 14 | \ No newline at end of file | ... | ... |
setup/wizard/templates/wizard.tpl
| ... | ... | @@ -2,16 +2,17 @@ |
| 2 | 2 | <html> |
| 3 | 3 | <head> |
| 4 | 4 | <title>KnowledgeTree Installer</title> |
| 5 | - <script type="text/javascript" src="resources/jquery.js"></script> | |
| 6 | - <script type="text/javascript" src="resources/jquery.form.js"></script> | |
| 7 | - <script type="text/javascript" src="resources/jquery.blockUI.js"></script> | |
| 8 | - <script type="text/javascript" src="resources/wizard.js" ></script> | |
| 9 | - <link rel="stylesheet" type="text/css" href="resources/wizard.css" /> | |
| 5 | + <?php echo $html->js('jquery.js'); ?> | |
| 6 | + <?php echo $html->js('jquery.form.js'); ?> | |
| 7 | + <?php echo $html->js('jquery.blockUI.js'); ?> | |
| 8 | + <?php echo $html->js('jquery.hotkeys.js'); ?> | |
| 9 | + <?php echo $html->js('wizard.js'); ?> | |
| 10 | + <?php echo $html->css('wizard.css'); ?> | |
| 10 | 11 | </head> |
| 11 | 12 | <body onload=""> |
| 12 | 13 | <div id="outer-wrapper"> |
| 13 | 14 | <div id="header"> |
| 14 | - <div id="logo"><img src="resources/graphics/dame/installer-header_logo.png"/></div> | |
| 15 | + <div id="logo"><?php echo $html->image('dame/installer-header_logo.png'); ?> </div> | |
| 15 | 16 | <div id="install_details"> |
| 16 | 17 | <span style="font-size:120%;"> <?php echo $vars['install_version']; ?> </span> |
| 17 | 18 | <span style="font-size:120%;"><?php echo $vars['install_type']; ?></span> |
| ... | ... | @@ -27,13 +28,13 @@ |
| 27 | 28 | <?php echo $content; ?> |
| 28 | 29 | </div> |
| 29 | 30 | </div> |
| 30 | - <div id="loading" style="display:none;"> <img src="resources/graphics/loading.gif" height="32px" width="32px"> </div> | |
| 31 | + <div id="loading" style="display:none;"> <?php echo $html->image('loading.gif', array("height"=>"32px", "width"=>"32px")); ?> </div> | |
| 31 | 32 | </div> |
| 32 | 33 | <div class="clearing"> </div> |
| 33 | 34 | </div> |
| 34 | 35 | |
| 35 | 36 | <div id="footer"> |
| 36 | - <img width="105" height="23" align="right" src="resources/graphics/dame/powered-by-kt.png" style="padding: 5px;"/> | |
| 37 | + <?php echo $html->image('dame/powered-by-kt.png', array("height"=>"23px", "width"=>"105px", "style"=>"padding: 5px;")); ?> | |
| 37 | 38 | </div> |
| 38 | 39 | </div> |
| 39 | 40 | </body> | ... | ... |