annotate modules/dnd_test/dnd_test.module @ 31:767ebf925654

Added forcecontainer tinymce plugin, lots and lots and lots of refactorizing.
author David Eads <eads@chicagotech.org>
date Thu, 19 Mar 2009 15:58:36 -0500
parents 2d49adbd8992
children
rev   line source
eads@2 1 <?php
eads@2 2
eads@4 3 /**
eads@4 4 * Implementation of hook_menu().
eads@4 5 */
eads@2 6 function dnd_test_menu() {
eads@2 7 $items = array();
eads@2 8 $items['dnd-test/library'] = array(
eads@2 9 'title' => 'Drag and drop test library',
eads@28 10 'page callback' => 'dnd_test_dnd_library',
eads@2 11 'access arguments' => array('access dnd test library'),
eads@2 12 );
eads@2 13 return $items;
eads@2 14 }
eads@2 15
eads@4 16 /**
eads@4 17 * Implementation of hook_perm().
eads@4 18 */
eads@2 19 function dnd_test_perm() {
eads@2 20 return array('access dnd test library');
eads@2 21 }
eads@2 22
eads@4 23 /**
eads@4 24 * Implementation of hook_form_alter().
eads@4 25 *
eads@4 26 * This demonstrates how to attach Drag and Drop to a given textarea.
eads@4 27 */
eads@2 28 function dnd_test_form_alter(&$form, &$form_state) {
eads@2 29 if ($form['#id'] == 'node-form' && $form['type']['#value'] == 'page') {
eads@2 30 $form['body_field']['body']['#dnd-enabled'] = TRUE;
eads@2 31 $form['body_field']['body']['#dnd-settings'] = array(
eads@2 32 'drop_selector' => '#edit-body-dnd-library .drop',
eads@28 33 'url' => 'dnd-test/library/?json',
eads@2 34 );
eads@2 35 $form['body_field']['body']['#rows'] = 28;
eads@2 36 }
eads@2 37 }
eads@2 38
eads@4 39 /**
eads@4 40 * Implementation of hook_theme().
eads@4 41 */
eads@4 42 function dnd_test_theme() {
eads@4 43 return array(
eads@4 44 'dnd_editor_item' => array(
eads@4 45 'arguments' => array('i' => NULL, 'size' => NULL),
eads@4 46 'template' => 'dnd-editor-item',
eads@4 47 ),
eads@4 48 'dnd_library_item' => array(
eads@4 49 'arguments' => array('i' => NULL),
eads@4 50 'template' => 'dnd-library-item',
eads@4 51 ),
eads@17 52 'dnd_library_preview' => array(
eads@17 53 'arguments' => array('i' => NULL),
eads@17 54 'template' => 'dnd-library-preview',
eads@17 55 ),
eads@31 56 'dnd_library_header' => array(
eads@31 57 'arguments' => array('page' => NULL),
eads@31 58 'template' => 'dnd-library-header',
eads@31 59 ),
eads@31 60 'dnd_library_footer' => array(
eads@31 61 'arguments' => array('page' => NULL),
eads@31 62 'template' => 'dnd-library-footer',
eads@31 63 ),
eads@4 64 );
eads@4 65 }
eads@4 66
eads@4 67 /**
eads@28 68 * Overloaded page callback.
eads@4 69 */
eads@28 70 function dnd_test_dnd_library($element = NULL) {
eads@28 71 $page = (array_key_exists('page', $_GET)) ? $_GET['page'] : 1;
eads@28 72 drupal_add_css(drupal_get_path('module', 'dnd_test') .'/dnd_test.css');
eads@28 73 drupal_json(dnd_test_generate_library($page));
eads@4 74 }
eads@2 75
eads@4 76 /**
eads@4 77 * Create contrived output
eads@4 78 */
eads@24 79 function dnd_test_generate_library($page = 1, $limit = 8) {
eads@4 80 $start = ($page * $limit) - ($limit);
eads@4 81 $end = $page * $limit;
eads@4 82
eads@28 83 $library = theme('dnd_library_header', $page);
eads@4 84 $editor_representations = array();
eads@17 85 $library_previews = array();
eads@4 86 for ($i=$start + 1; $i < $end + 1; $i++) {
eads@4 87 $library .= theme('dnd_library_item', $i);
eads@4 88 $editor_representations += dnd_editor_items($i);
eads@17 89 $library_previews['dnd-test-'. $i] = theme('dnd_library_preview', $i);
eads@4 90 }
eads@31 91 $library .= theme('dnd_library_footer', $page);
eads@31 92
eads@4 93 return array(
eads@4 94 'library' => $library,
eads@4 95 'editor_representations' => $editor_representations,
eads@17 96 'library_previews' => $library_previews,
eads@2 97 );
eads@4 98 }
eads@4 99
eads@4 100 /**
eads@4 101 * Theme wrapper that spins out multiple library representations for a given
eads@14 102 * editor representation. This is because we want to demonstrate how to allow
eads@4 103 * for multiple versions (i.e. different sizes) of a single item
eads@4 104 */
eads@4 105 function dnd_editor_items($i) {
eads@4 106 $item = array();
eads@4 107 foreach(array(t('S'), t('M'), t('L')) as $size) {
eads@24 108 $item[$i .'-'. $size] = array(
eads@24 109 'body' => theme('dnd_editor_item', $i, $size),
eads@24 110 'title' => 'Item '. $i .'-S',
eads@24 111 );
eads@2 112 }
eads@4 113 return $item;
eads@2 114 }
eads@4 115
eads@4 116 /**
eads@17 117 * Completely contrived library preview theme function
eads@17 118 */
eads@17 119 function template_preprocess_dnd_library_preview(&$variables) {
eads@17 120 template_preprocess_dnd_library_item($variables);
eads@17 121
eads@17 122 $variables['id'] = 'dnd-preview-'. $variables['i'];
eads@21 123 $variables['image'] = '<img src="http://'. $_SERVER['HTTP_HOST'] . base_path() . drupal_get_path('module', 'dnd_test') .'/img/item-'. $variables['img_num'] .'-S.jpg" class="drop" width="125" height="94" />';
eads@17 124
eads@21 125 $variables['description'] = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.';
eads@17 126 }
eads@17 127
eads@17 128
eads@17 129 /**
eads@4 130 * Completely contrived edit item theme function
eads@4 131 */
eads@4 132 function template_preprocess_dnd_library_item(&$variables) {
eads@12 133 global $_SERVER;
eads@12 134
eads@4 135 $i = $variables['i'];
eads@9 136
eads@9 137 if ($i % 3 == 0) {
eads@9 138 $img = 3;
eads@9 139 }
eads@9 140 else if ($i % 2 == 0) {
eads@9 141 $img = 2;
eads@9 142 }
eads@9 143 else {
eads@9 144 $img = 1;
eads@9 145 }
eads@9 146
eads@17 147 $variables['img_num'] = $img;
eads@17 148 $variables['id'] = 'dnd-test-'. $i;
eads@14 149 $variables['image'] = '<img src="http://'. $_SERVER['HTTP_HOST'] . base_path() . drupal_get_path('module', 'dnd_test') .'/img/item-'. $img .'-thumb.jpg?dnd_id='. $i .'-M" class="drop" />';
eads@4 150 $variables['title'] = t('Lorem Ipsum @count', array('@count' => $i));
eads@4 151 $variables['date'] = 'Feb 18 2009';
eads@4 152 $variables['author'] = 'David Eads';
eads@4 153 foreach(array(t('S'), t('M'), t('L')) as $size) {
eads@14 154 $sizes[] = '<img src="http://'. $_SERVER['HTTP_HOST'] . base_path() . drupal_get_path('module', 'dnd_test') .'/img/icon/'. $size .'.png?dnd_id='. $i .'-'. $size .'" class="drop" />';
eads@4 155 }
eads@4 156 $variables['sizes'] = '<ul><li>'. implode('</li><li>', $sizes) .'</li></ul>';
eads@4 157 }
eads@4 158
eads@4 159 function template_preprocess_dnd_editor_item(&$variables) {
eads@4 160 list($i, $size) = array($variables['i'], $variables['size']);
eads@9 161
eads@9 162 if ($i % 3 == 0) {
eads@9 163 $img = 3;
eads@9 164 }
eads@9 165 else if ($i % 2 == 0) {
eads@9 166 $img = 2;
eads@9 167 }
eads@9 168 else {
eads@9 169 $img = 1;
eads@9 170 }
eads@23 171 $variables['image'] = theme('image', drupal_get_path('module', 'dnd_test') .'/img/item-'. $img .'-'. $size .'.jpg', '', '', array('class' => 'dnd-dropped', 'id' => 'dnd-id-'. $i));
eads@4 172 }
eads@20 173
eads@20 174 function template_preprocess_dnd_library_header(&$variables) {}
eads@31 175
eads@31 176 function template_preprocess_dnd_library_footer(&$variables) {}