diff options
author | Brion Vibber <brion@pobox.com> | 2010-09-24 17:22:44 -0700 |
---|---|---|
committer | Brion Vibber <brion@pobox.com> | 2010-09-24 17:22:44 -0700 |
commit | ebbbaba378bbe174ceb5e76477db89ef647304e5 (patch) | |
tree | 75de4758bf4edceb260c4c3f9cc9d0110e79f8e2 /plugins/YammerImport/actions/yammeradminpanel.php | |
parent | 19adb7c8d3aadcc71a24b9d30ad0742b43ecb328 (diff) |
Work in progress on getting the frontend Yammer import form going....
Diffstat (limited to 'plugins/YammerImport/actions/yammeradminpanel.php')
-rw-r--r-- | plugins/YammerImport/actions/yammeradminpanel.php | 177 |
1 files changed, 43 insertions, 134 deletions
diff --git a/plugins/YammerImport/actions/yammeradminpanel.php b/plugins/YammerImport/actions/yammeradminpanel.php index 13c95e37f..56e721d03 100644 --- a/plugins/YammerImport/actions/yammeradminpanel.php +++ b/plugins/YammerImport/actions/yammeradminpanel.php @@ -53,170 +53,79 @@ class YammeradminpanelAction extends AdminPanelAction return _m('Yammer import tool'); } - /** - * Show the Yammer admin panel form - * - * @return void - */ - function showForm() + function prepare($args) { - $form = new YammerAdminPanelForm($this); - $form->show(); - return; - } + $ok = parent::prepare($args); - function showStylesheets() - { - parent::showStylesheets(); - $this->cssLink('plugins/YammerImport/css/admin.css', null, 'screen, projection, tv'); - } -} + $this->init_auth = $this->trimmed('init_auth'); + $this->verify_token = $this->trimmed('verify_token'); -class YammerAdminPanelForm extends AdminForm -{ - /** - * ID of the form - * - * @return string ID of the form - */ - function id() - { - return 'yammeradminpanel'; + return $ok; } - /** - * class of the form - * - * @return string class of the form - */ - function formClass() + function handle($args) { - return 'form_settings'; + if ($this->init_auth) { + $url = $runner->requestAuth(); + $form = new YammerAuthVerifyForm($this, $url); + return $this->showAjaxForm($form); + } else if ($this->verify_token) { + $runner->saveAuthToken($this->verify_token); + $form = new YammerAuthProgressForm(); + return $this->showAjaxForm($form); + } + + return parent::handle($args); } - /** - * Action of the form - * - * @return string URL of the action - */ - function action() + function showAjaxForm($form) { - return common_local_url('yammeradminpanel'); + $this->startHTML('text/xml;charset=utf-8'); + $this->elementStart('head'); + $this->element('title', null, _m('Yammer import')); + $this->elementEnd('head'); + $this->elementStart('body'); + $form->show(); + $this->elementEnd('body'); + $this->elementEnd('html'); } /** - * Data elements of the form + * Show the Yammer admin panel form * * @return void */ - function formData() + function showForm() { + $this->elementStart('fieldset'); + $runner = YammerRunner::init(); switch($runner->state()) { case 'init': + $form = new YammerAuthInitForm($this); + break; case 'requesting-auth': - $this->showAuthForm(); + $form = new YammerAuthVerifyForm($this, $runner); + break; default: + $form = new YammerProgressForm($this, $runner); } - $this->showImportState($runner); - } - - private function showAuthForm() - { - $this->out->element('p', array(), 'show an auth form'); - } - - private function showImportState(YammerRunner $runner) - { - $userCount = $runner->countUsers(); - $groupCount = $runner->countGroups(); - $fetchedCount = $runner->countFetchedNotices(); - $savedCount = $runner->countSavedNotices(); - - $labels = array( - 'init' => array( - 'label' => _m("Initialize"), - 'progress' => _m('No import running'), - 'complete' => _m('Initiated Yammer server connection...'), - ), - 'requesting-auth' => array( - 'label' => _m('Connect to Yammer'), - 'progress' => _m('Awaiting authorization...'), - 'complete' => _m('Connected.'), - ), - 'import-users' => array( - 'label' => _m('Import user accounts'), - 'progress' => sprintf(_m("Importing %d user...", "Importing %d users...", $userCount), $userCount), - 'complete' => sprintf(_m("Imported %d user.", "Imported %d users.", $userCount), $userCount), - ), - 'import-groups' => array( - 'label' => _m('Import user groups'), - 'progress' => sprintf(_m("Importing %d group...", "Importing %d groups...", $groupCount), $groupCount), - 'complete' => sprintf(_m("Imported %d group.", "Imported %d groups.", $groupCount), $groupCount), - ), - 'fetch-messages' => array( - 'label' => _m('Prepare public notices for import'), - 'progress' => sprintf(_m("Preparing %d notice...", "Preparing %d notices...", $fetchedCount), $fetchedCount), - 'complete' => sprintf(_m("Prepared %d notice.", "Prepared %d notices.", $fetchedCount), $fetchedCount), - ), - 'save-messages' => array( - 'label' => _m('Import public notices'), - 'progress' => sprintf(_m("Importing %d notice...", "Importing %d notices...", $savedCount), $savedCount), - 'complete' => sprintf(_m("Imported %d notice.", "Imported %d notices.", $savedCount), $savedCount), - ), - 'done' => array( - 'label' => _m('Done'), - 'progress' => sprintf(_m("Import is complete!")), - 'complete' => sprintf(_m("Import is complete!")), - ) - ); - $steps = array_keys($labels); - $currentStep = array_search($runner->state(), $steps); + $form->show(); - $this->out->elementStart('fieldset', array('class' => 'yammer-import')); - $this->out->element('legend', array(), _m('Import status')); - foreach ($steps as $step => $state) { - if ($step < $currentStep) { - // This step is done - $this->progressBar($state, - 'complete', - $labels[$state]['label'], - $labels[$state]['complete']); - } else if ($step == $currentStep) { - // This step is in progress - $this->progressBar($state, - 'progress', - $labels[$state]['label'], - $labels[$state]['progress']); - } else { - // This step has not yet been done. - $this->progressBar($state, - 'waiting', - $labels[$state]['label'], - _m("Waiting...")); - } - } - $this->out->elementEnd('fieldset'); + $this->elementEnd('fieldset'); } - private function progressBar($state, $class, $label, $status) + function showStylesheets() { - // @fixme prettify ;) - $this->out->elementStart('div', array('class' => "import-step import-step-$state $class")); - $this->out->element('div', array('class' => 'import-label'), $label); - $this->out->element('div', array('class' => 'import-status'), $status); - $this->out->elementEnd('div'); + parent::showStylesheets(); + $this->cssLink('plugins/YammerImport/css/admin.css', null, 'screen, projection, tv'); } - /** - * Action elements - * - * @return void - */ - function formActions() + function showScripts() { - // No submit buttons needed at bottom + parent::showScripts(); + $this->script('plugins/YammerImport/js/yammer-admin.js'); } } |