diff options
author | Simon Rettberg | 2014-05-20 19:20:02 +0200 |
---|---|---|
committer | Simon Rettberg | 2014-05-20 19:20:02 +0200 |
commit | 4a8725b8dcac3bd0e7afe463968d281e4cf8df6c (patch) | |
tree | 8d1374edd2a1e74ed3a99813210ca84e999fb82c /modules | |
parent | OO style modules (diff) | |
download | slx-admin-4a8725b8dcac3bd0e7afe463968d281e4cf8df6c.tar.gz slx-admin-4a8725b8dcac3bd0e7afe463968d281e4cf8df6c.tar.xz slx-admin-4a8725b8dcac3bd0e7afe463968d281e4cf8df6c.zip |
JS Stuff for Taskmanager interaction
More work on AD wizard
Diffstat (limited to 'modules')
-rw-r--r-- | modules/sysconfig.inc.php | 31 | ||||
-rw-r--r-- | modules/sysconfig/addmodule.inc.php | 16 | ||||
-rw-r--r-- | modules/sysconfig/addmodule_ad.inc.php | 89 |
3 files changed, 118 insertions, 18 deletions
diff --git a/modules/sysconfig.inc.php b/modules/sysconfig.inc.php index 28fc6a50..f177f0f1 100644 --- a/modules/sysconfig.inc.php +++ b/modules/sysconfig.inc.php @@ -7,18 +7,11 @@ class Page_SysConfig extends Page { User::load(); - // Read request vars $action = Request::any('action', 'list'); - $step = Request::any('step', 0); // Action: "addmodule" (upload new module) if ($action === 'addmodule') { - if ($step === 0) $step = 'AddModule_Start'; - require_once 'modules/sysconfig/addmodule.inc.php'; - foreach (glob('modules/sysconfig/addmodule_*.inc.php') as $file) { - require_once $file; - } - AddModule_Base::setStep($step); + $this->initAddModule(); AddModule_Base::preprocess(); } @@ -67,6 +60,17 @@ class Page_SysConfig extends Page break; } } + + protected function doAjax() + { + $action = Request::any('action', 'list'); + + // Action: "addmodule" (upload new module) + if ($action === 'addmodule') { + $this->initAddModule(); + AddModule_Base::ajax(); + } + } private function rr_list_configs() { @@ -83,5 +87,16 @@ class Page_SysConfig extends Page } Render::addTemplate('page-sysconfig-main', array('modules' => $modules, 'token' => Session::get('token'))); } + + private function initAddModule() + { + $step = Request::any('step', 0); + if ($step === 0) $step = 'AddModule_Start'; + require_once 'modules/sysconfig/addmodule.inc.php'; + foreach (glob('modules/sysconfig/addmodule_*.inc.php') as $file) { + require_once $file; + } + AddModule_Base::setStep($step); + } } diff --git a/modules/sysconfig/addmodule.inc.php b/modules/sysconfig/addmodule.inc.php index 924f18fa..883c196f 100644 --- a/modules/sysconfig/addmodule.inc.php +++ b/modules/sysconfig/addmodule.inc.php @@ -81,6 +81,14 @@ abstract class AddModule_Base // void } + /** + * Handle ajax stuff + */ + protected function ajaxInternal() + { + // void + } + public static function preprocess() { if (self::$instance === false) { @@ -96,6 +104,14 @@ abstract class AddModule_Base } self::$instance->renderInternal(); } + + public static function ajax() + { + if (self::$instance === false) { + Util::traceError('No step instance yet'); + } + self::$instance->ajaxInternal(); + } } diff --git a/modules/sysconfig/addmodule_ad.inc.php b/modules/sysconfig/addmodule_ad.inc.php index abc55df5..ab897096 100644 --- a/modules/sysconfig/addmodule_ad.inc.php +++ b/modules/sysconfig/addmodule_ad.inc.php @@ -14,13 +14,15 @@ class AdModule_Start extends AddModule_Base protected function renderInternal() { - Session::set('ad_stuff', false); + Session::set('ad_check', false); + Session::save(); Render::addDialog('Active Directory Authentifizierung', false, 'sysconfig/ad-start', array( 'step' => 'AdModule_CheckConnection', 'server' => Request::post('server'), 'searchbase' => Request::post('searchbase'), 'binddn' => Request::post('binddn'), 'bindpw' => Request::post('bindpw'), + 'token' => Session::get('token') )); } @@ -28,9 +30,8 @@ class AdModule_Start extends AddModule_Base class AdModule_CheckConnection extends AddModule_Base { - - private $taskId = false; - + private $taskIds; + protected function preprocessInternal() { $server = Request::post('server'); @@ -39,19 +40,87 @@ class AdModule_CheckConnection extends AddModule_Base $bindpw = Request::post('bindpw'); if (empty($server) || empty($searchbase) || empty($binddn)) { Message::addError('empty-field'); - AddModule_Base::setStep('AdModule_Start'); + AddModule_Base::setStep('AdModule_Start'); // Continues with AdModule_Start for render() return; } - $this->taskId = 'ad_' . mt_rand() . '-' . microtime(true); - Taskmanager::submit('LdapSearch', array( + /* + $data = Taskmanager::submit('LdapSearch', array( 'id' => $this->taskId, 'uri' => '' - ), true); + )); + */ + $ldapSearch = Taskmanager::submit('DummyTask', array()); + if (isset($ldapSearch['id'])) { + $dummy = Taskmanager::submit('DummyTask', array('parentTask' => $ldapSearch['id'])); + } + if (!isset($ldapSearch['id']) || !isset($dummy['id'])) { + AddModule_Base::setStep('AdModule_Start'); // Continues with AdModule_Start for render() + return; + } + $this->taskIds = array( + 'tm-search' => $ldapSearch['id'], + 'tm-dummy' => $dummy['id'] + ); } protected function renderInternal() { - Message::addInfo('missing-file'); + Render::addDialog('Active Directory Authentifizierung', false, 'sysconfig/ad-checkconnection', + array_merge($this->taskIds, array( + 'server' => Request::post('server'), + 'searchbase' => Request::post('searchbase'), + 'binddn' => Request::post('binddn'), + 'bindpw' => Request::post('bindpw'), + 'token' => Session::get('token'), + 'step' => 'AdModule_Finish' + )) + ); + } + +} + +class AdModule_Finish extends AddModule_Base +{ + + private $taskIds; + + protected function preprocessInternal() + { + $data = json_encode(array( + 'server' => Request::post('server'), + 'searchbase' => Request::post('searchbase'), + 'binddn' => Request::post('binddn'), + 'bindpw' => Request::post('bindpw'), + )); + Database::exec("INSERT INTO configtgz_module (title, moduletype, filename, contents) " + . " VALUES (:title, 'AD_AUTH', '', :content)", array( + 'title' => 'AD: ' . Request::post('server'), + 'content' => $data)); + $id = Database::lastInsertId(); + $name = CONFIG_TGZ_LIST_DIR . '/modules/AD_AUTH_id_' . $id . '.' . mt_rand() . '.tgz'; + Database::exec("UPDATE configtgz_module SET filename = :filename WHERE moduleid = :id LIMIT 1", array( + 'id' => $id, + 'filename' => $name + )); + $tgz = Taskmanager::submit('DummyTask', array()); + if (isset($tgz['id'])) { + $ldadp = Taskmanager::submit('DummyTask', array('parentTask' => $tgz['id'])); + } + if (!isset($tgz['id']) || !isset($ldadp['id'])) { + AddModule_Base::setStep('AdModule_Start'); // Continues with AdModule_Start for render() + return; + } + $this->taskIds = array( + 'tm-module' => $tgz['id'], + 'tm-ldadp' => $ldadp['id'] + ); } -}
\ No newline at end of file + protected function renderInternal() + { + Render::addDialog('Active Directory Authentifizierung', false, 'sysconfig/ad-finish', + $this->taskIds + ); + } + +} |