diff popups_test.module @ 0:76f9b43738f2

Popups 2.0-alpha5
author Franck Deroche <franck@defr.org>
date Fri, 31 Dec 2010 13:41:08 +0100
parents
children 4215c43e74eb
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/popups_test.module	Fri Dec 31 13:41:08 2010 +0100
@@ -0,0 +1,227 @@
+<?php
+// $Id: popups_test.module,v 1.1.4.6 2009/03/19 15:53:44 starbow Exp $
+
+/**
+ * @file
+ * Page for testing the Popups API.
+ */
+
+
+// **************************************************************************
+// CORE HOOK FUNCTIONS   ****************************************************
+// **************************************************************************
+
+/**
+ * Implementation of hook_menu().
+ *
+ * @return array of new menu items.
+ */
+function popups_test_menu() {
+  // Items for testing.
+  $items['popups/test'] = array(
+    'title' => 'Popup Test',
+    'page callback' => '_popups_test_popups',
+    'type' => MENU_CALLBACK,
+    'access callback' => TRUE,
+  );
+  $items['popups/test/response'] = array(
+    'page callback' => '_popups_test_response',
+    'type' => MENU_CALLBACK,
+    'access callback' => TRUE,
+  );
+  $items['popups/test/namechange'] = array(
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('_popups_test_namechange'),
+    'type' => MENU_CALLBACK,
+    'access callback' => TRUE,
+  );
+  $items['popups/test/old'] = array(
+    'title' => 'Popup Test',
+    'page callback' => '_popups_test_popups_old',
+    'type' => MENU_CALLBACK,
+    'access callback' => TRUE,
+  );  
+  return $items;
+}
+
+/**
+ *  Implementation of hook_popups().
+ * 
+ * This implements hook_popups, defined in popups_get_popups.
+ * See the comments in popups_add_popups for explination of the options.
+ * Adding popup behavior to the core admin pages has been moved to popups_admin.
+ *
+ * @return: Array of link selectors to apply popup behavior to.
+ *          Keyed by path or form_id.
+ */
+function popups_test_popups() {   
+  return array(
+    'popups/test' => array( // test page.
+//    '*' => array( // test page.
+      '#test-popup' => array( 
+//        'additionalJavascript' => array('misc/collapse.js'),
+//        'forceReturn' => 'node/add/story',
+      ),
+    ),  
+  );
+}
+
+// **************************************************************************
+// TESTING   ****************************************************************
+// **************************************************************************
+
+function _popups_test_popups() {
+  popups_add_popups();
+  $output = '<ol id="test-list">';
+  $output .= '<li>'. l("Pop up entire local page.", 'popups/test/response', 
+               array('attributes' => array('class' => 'popups')));
+  $output .= "<li>". l("Pop with options (href override).", 'popups/test/', 
+               array('attributes' => array('class' => 'popups', 'on-popups-options' => '{href: "test/response"}')));
+  $output .= "<li>". l("Pop with options (width=200px).", 'popups/test/response', 
+               array('attributes' => array('class' => 'popups', 'on-popups-options' => '{width: "200px"}')));
+  $output .= "<li class=\"popups\" on-popups-options=\"{href: 'test/response'}\">Non-link popup</li>";
+  $output .= '<li>'. l("Add Story (hook)", 'node/add/story',
+               array( 'attributes' => array('id' => 'test-popup')));
+  $output .= '<li>'. l("Add Story (attribute).", 'node/add/story',
+               array( 'attributes' => array('class' => 'popups-form')));
+               
+  $output .= '<li>'. l("Change Settings and ajax update entire content area: ", 
+                       'admin/settings/popups',
+                       array( 'attributes' => array('class' => 'popups-form'),
+                     ));
+  $output .= " (Auto Fade checkbox is: " . (variable_get('popups_autoclose_final_message', 1) ? 'on' : 'off') . ')';
+
+  $output .= '<li>'. l("Change Settings and ajax update only single target.", 'admin/settings/popups',
+               array( 'attributes' => array('id' => 'reload-target'), 
+               ));
+  $output .= "<span id='response2'> (Auto Fade checkbox is: " . (variable_get('popups_autoclose_final_message', 1) ? 'on' : 'off') . ')</span>';
+  popups_add_popups(array('#reload-target'=>array('targetSelectors'=>array('#response2'))));   
+      
+  $output .= '<li>'. l("Change Settings and ajax update multiple targets with data from other page (tricky!).", 'admin/settings/popups',
+             array( 'attributes' => array(
+                'id' => 'foo',
+                'class' => 'popups-form',
+                'on-popups-options' => '{targetSelectors: {"#edit-popups-always-scan-wrapper": "#foo", "#edit-popups-popup-final-message-wrapper": "#test-list li:first"}, forceReturn: "admin/settings/popups"}')));
+
+  $output .= '<li>'. l("Change Settings and reload entire page.", 
+                       'admin/settings/popups',
+                       array( 'attributes' => array('class' => 'popups-form-reload'),
+                     ));
+                     
+  $output .= '<li>'. l("Pop up defined by popups_add_popups rule.", 'popups/test/response', 
+                     array('attributes' => array('id' => 'rule-test')));
+  popups_add_popups(array('#rule-test'=>array('width'=>'300px')));       
+  $output .= '<li>'. l('Ajax update just Page Title (only works if you theme uses id="page-title")', 'popups/test/namechange', 
+                     array('attributes' => array('id' => 'title-test')));
+  popups_add_popups(array('#title-test'=>array('titleSelectors'=>array('#page-title'), 'noUpdate'=> TRUE, 'forceReturn'=>'popups/test/namechange')));       
+
+  global $user;
+  $output .= "<li>You are user number $user->uid</li>";
+  if ($user->uid == 0) {
+    $output .= '<li>'. l("Login and ajax refresh content area.", 'user', 
+                       array('attributes' => array('class' => 'popups-form')));
+    $output .= '<li>'. l("Login and reload entire page.", 'user', 
+                       array('attributes' => array('class' => 'popups-form-reload')));                   
+    $output .= '<li>'. l("Login and do not reload anything.", 'user', 
+                       array('attributes' => array('class' => 'popups-form-noupdate')));                   
+  }
+  else {
+    $output .= '<li>'. l("Logout (need to surpress warning b/c session is dumped)", 'logout', 
+                     array('attributes' => array('id' => 'logout')));
+  }
+  // Need to have the rule outside the else, or it won't get loaded on ajax reload.
+  popups_add_popups(array('#logout'=>array('noUpdate'=>TRUE, 'reloadOnError'=>TRUE))); 
+
+  $output .= '<li>'. l("Add Poll (test inline)", 'node/add/poll', 
+                       array('attributes' => array('class' => 'popups-form')));
+    
+  $output .= "</ol>";                
+  return $output;
+}
+
+function _popups_test_popups_old() {
+//  drupal_set_message('Popup Test Page: If you edit your page.tpl.php to wrap the print $messages in a div with id="popit", this message will popup on page load');
+  popups_add_popups();
+  $output = '<ul id="test-list">';
+  $output .= '<li>'. l("Pop up entire local page.", 'popups/test/response', 
+               array('attributes' => array('class' => 'popups')));
+  $output .= "<li>". l("Pop with options (href override).", 'popups/test/', 
+               array('attributes' => array('class' => 'popups', 'on-popups-options' => '{href: "test/response"}')));
+  $output .= "<li>". l("Pop with options (width=200px).", 'popups/test/response', 
+               array('attributes' => array('class' => 'popups', 'on-popups-options' => '{width: "200px"}')));
+  $output .= "<li class=\"popups\" on-popups-options=\"{href: 'test/response'}\">Non-link popup</li>";
+  $output .= '<li>'. l("Add Story (hook)", 'node/add/story',
+               array( 'attributes' => array('id' => 'test-popup')));
+  $output .= '<li>'. l("Add Story (attribute).", 'node/add/story',
+               array( 'attributes' => array('class' => 'popups-form')));
+               
+  $output .= '<li>'. l("Change Settings and ajax update entire content area: ", 
+                       'admin/settings/popups',
+                       array( 'attributes' => array('class' => 'popups-form'),
+                     ));
+  $output .= " (Auto Fade checkbox is: " . (variable_get('popups_popup_final_message', 1) ? 'on' : 'off') . ')';
+
+  $output .= '<li>'. l("Change Settings and ajax update only single target.", 'admin/settings/popups',
+               array( 'attributes' => array('id' => 'reload-target'), 
+               ));
+  $output .= "<span id='response2'> (Auto Fade checkbox is: " . (variable_get('popups_popup_final_message', 1) ? 'on' : 'off') . ')</span>';
+  popups_add_popups(array('#reload-target'=>array('targetSelectors'=>array('#response2'))));   
+      
+  $output .= '<li>'. l("Change Settings and ajax update multiple targets with data from other page (tricky!).", 'admin/settings/popups',
+             array( 'attributes' => array(
+                'id' => 'foo',
+                'class' => 'popups-form',
+                'on-popups-options' => '{targetSelectors: {"#edit-popups-always-scan-wrapper": "#foo", "#edit-popups-popup-final-message-wrapper": "#test-list li:first"}, forceReturn: "admin/settings/popups"}')));
+
+  $output .= '<li>'. l("Change Settings and reload entire page.", 
+                       'admin/settings/popups',
+                       array( 'attributes' => array('class' => 'popups-form-reload'),
+                     ));
+                     
+  $output .= '<li>'. l("Pop up defined by popups_add_popups rule.", 'popups/test/response', 
+                     array('attributes' => array('id' => 'rule-test')));
+  popups_add_popups(array('#rule-test'=>array('width'=>'300px')));       
+  $output .= '<li>'. l('Ajax update just Page Title (only works if you theme uses id="page-title")', 'popups/test/namechange', 
+                     array('attributes' => array('id' => 'title-test')));
+  popups_add_popups(array('#title-test'=>array('titleSelectors'=>array('#page-title'), 'noUpdate'=> TRUE, 'forceReturn'=>'popups/test/namechange')));       
+
+  global $user;
+  $output .= "<li>You are user number $user->uid</li>";
+  if ($user->uid == 0) {
+    $output .= '<li>'. l("Login and ajax refresh content area.", 'user', 
+                       array('attributes' => array('class' => 'popups-form')));
+    $output .= '<li>'. l("Login and reload entire page.", 'user', 
+                       array('attributes' => array('class' => 'popups-form-reload')));                   
+    $output .= '<li>'. l("Login and do not reload anything.", 'user', 
+                       array('attributes' => array('class' => 'popups-form-noupdate')));                   
+  }
+  else {
+    $output .= '<li>'. l("Logout (need to surpress warning b/c session is dumped)", 'logout', 
+                     array('attributes' => array('id' => 'logout')));
+  }
+  // Need to have the rule outside the else, or it won't get loaded on ajax reload.
+  popups_add_popups(array('#logout'=>array('noUpdate'=>TRUE, 'reloadOnError'=>TRUE))); 
+
+  $output .= '<li>'. l("Add Poll (test inline)", 'node/add/poll', 
+                       array('attributes' => array('class' => 'popups-form')));
+    
+  $output .= "</ul>";                
+  return $output;
+}
+
+function _popups_test_response() {
+  drupal_set_title("Popup Test Two");
+  return '<div>Hello World</div><a href="#" class="popups">Popup chaining test</a>';
+}
+
+function _popups_test_namechange() {
+  drupal_set_title("New Name for Test Page");
+  $form = array();
+
+  $form['popups_popup_final_message'] = array(
+    '#type' => 'submit',
+    '#value' => t('Test Name Change'),
+  );
+  
+  return $form;
+}