From 698f5c7a20d5792b629404ce513d2fa2c2bab907 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Fri, 24 Sep 2010 17:22:44 -0700 Subject: Work in progress on getting the frontend Yammer import form going.... --- plugins/YammerImport/actions/yammeradminpanel.php | 177 ++++++---------------- plugins/YammerImport/actions/yammerauth.php | 80 ++++++++-- 2 files changed, 114 insertions(+), 143 deletions(-) (limited to 'plugins/YammerImport/actions') 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'); } } diff --git a/plugins/YammerImport/actions/yammerauth.php b/plugins/YammerImport/actions/yammerauth.php index 7e6e7204a..d0d4b40c7 100644 --- a/plugins/YammerImport/actions/yammerauth.php +++ b/plugins/YammerImport/actions/yammerauth.php @@ -1,17 +1,79 @@ . + * + * @category Settings + * @package StatusNet + * @author Zach Copley + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ +if (!defined('STATUSNET')) { + exit(1); +} -function showYammerAuth() +class YammerauthAction extends AdminPanelAction { - $token = $yam->requestToken(); - $url = $yam->authorizeUrl($token); - // We're going to try doing this in an iframe; if that's not happy - // we can redirect but there doesn't seem to be a way to get Yammer's - // oauth to call us back instead of the manual copy. :( + /** + * Show the Yammer admin panel form + * + * @return void + */ + function prepare($args) + { + parent::prepare($args); + + $this->verify_token = $this->trim('verify_token'); + } + + /** + * Handle request + * + * Does the subscription and returns results. + * + * @param Array $args unused. + * + * @return void + */ + + function handle($args) + { + if ($this->verify_token) { + $runner->saveAuthToken($this->verify_token); + $form = new YammerAuthProgressForm(); + } else { + $url = $runner->requestAuth(); + $form = new YammerAuthVerifyForm($this, $url); + } - //common_redirect($url, 303); - $this->element('iframe', array('id' => 'yammer-oauth', - 'src' => $url)); + $this->startHTML('text/xml;charset=utf-8'); + $this->elementStart('head'); + $this->element('title', null, _m('Connect to Yammer')); + $this->elementEnd('head'); + $this->elementStart('body'); + $form->show(); + $this->elementEnd('body'); + $this->elementEnd('html'); + } } -- cgit v1.2.3-54-g00ecf