changeset 11:272628486e75

Adding the MEE Ressource Manager !
author Franck Deroche <franck@defr.org>
date Thu, 04 Jun 2009 12:59:55 +0200
parents 5328b450f7b7
children da5d54d099b1
files css/mee.css mee.js mee.module
diffstat 3 files changed, 118 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/css/mee.css	Wed Jun 03 15:02:37 2009 +0200
+++ b/css/mee.css	Thu Jun 04 12:59:55 2009 +0200
@@ -2,10 +2,15 @@
   float: left;
   width: 100%;
 }
-.mee-wrap-editor-library .form-item {
-  float: left;
+.mee-wrap-editor-library .form-item, table.mee-ressource-manager, .mee-filter-form {
   width: 73%;
 }
+.mee-filter-form .form-item {
+  width: 100%;
+}
+.mee-filter-form .form-item .tips li {
+  white-space: normal;
+}
 #scald-dnd-library-form .form-item {
   float: none;
   width: auto;
@@ -21,9 +26,6 @@
   float: right;
   width: 25%;
 }
-.mee-filter-form {
-  clear: left;
-}
 .dnd-library-wrapper .header {
   padding: 3px 4px;
   background-color: #ccc;
@@ -37,7 +39,7 @@
 .dnd-library-wrapper .view-filters textarea {
   font-size: .875em;
 }
-.dnd-library-wrapper .header h3 {
+.dnd-library-wrapper .header h3, .mee-ressource-manager h3 {
   font-size: 12px;
   font-weight: bold;
 }
--- a/mee.js	Wed Jun 03 15:02:37 2009 +0200
+++ b/mee.js	Thu Jun 04 12:59:55 2009 +0200
@@ -1,2 +1,55 @@
 Drupal.behaviors.mee = function(context) {
+  $("div.mee-wrap-editor-library:not(.mee-processed)")
+    .addClass('mee-processed')
+    .find('> div.dnd-library-wrapper')
+    .each(function() {
+      var $editor = $('#' + this.id.slice(0, -12)); 
+      $editor.bind('wysiwygAttach', Drupal.mee.attach);
+      $editor.bind('wysiwygDetach', Drupal.mee.detach);
+    })
+    .end()
 }
+
+Drupal.mee = {
+  attach: function(e, data) {
+    var t = setInterval(function() {
+      var tiny_instance = tinyMCE.getInstanceById(data.field);
+      if (tiny_instance) {
+        clearInterval(t);
+        $(tiny_instance.editor_id)
+          .find('iframe')
+          .unbind('dnd_drop')
+          .bind('dnd_drop', function(e, data) {
+            var rep = Drupal.settings.dndEditorRepresentations[data.representation_id];
+            $(this)
+              .parents('div.mee-wrap-editor-library.mee-processed')
+              .find('table.mee-ressource-manager')
+              .each(function(i) {
+                $(this).append(Drupal.mee.generate(
+                  rep.title,
+                  Drupal.tableDrag[this.id]
+                ));
+              });
+          });
+      }
+    }, 100);
+  },
+  detach: function(e, data) {
+
+  },
+  generate: function(title, tableDrag) {
+    var $select = $("<select />"), $tr = $('<tr />'), $td = $("<td />");
+    $tr
+      .addClass('draggable')
+      .append($('<td></td>'))
+      .append($('<td></td>').append(title));
+    for (var i = -10; i <= 10; i++) {
+      $select.append("<option>"+ i +"</option>");
+    }
+    $select.val(0).addClass('mee-rm-weight');
+    $td.append($select);
+    $tr.append($td);
+    tableDrag.makeDraggable($tr);
+    return $tr;
+  }
+}
--- a/mee.module	Wed Jun 03 15:02:37 2009 +0200
+++ b/mee.module	Thu Jun 04 12:59:55 2009 +0200
@@ -15,6 +15,9 @@
     'mee_textarea' => array(
       'arguments' => array('element' => NULL),
     ),
+    'mee_ressource_manager' => array(
+      'arguments' => array('element' => NULL),
+    ),
     'mee_formatter_default' => array(
       'arguments' => array('element' => NULL),
     ),
@@ -341,9 +344,29 @@
   drupal_add_css(drupal_get_path('module', 'mee') .'/css/mee.css');
   drupal_add_js(drupal_get_path('module', 'mee')  .'/mee.js');
 
+  $element['mee'] = array(
+    '#type' => 'markup',
+    '#prefix' => '<div class="mee-wrap-editor-library">',
+    '#suffix' => '</div>',
+  );
+
   $field = $form['#field_info'][$element['#field_name']];
   $field_key   = $element['#columns'][0];
-  $element[$field_key] = array(
+  $element['mee']['ressource_manager'] = array(
+    '#type' => 'markup',
+    '#weight' => 0.5,
+    '#theme' => 'mee_ressource_manager'
+  );
+  $element['mee']['ressource_manager'][0] = array(
+    'title' => array(
+      '#type'  => 'markup',
+      '#value' => 'Lorem ipsum'
+    ),
+    'weight' => array(
+      '#type'  => 'weight',
+    )
+  );
+  $element['mee'][$field_key] = array(
     '#type' => 'textarea',
     '#default_value' => isset($element['#value'][$field_key]) ? $element['#value'][$field_key] : NULL,
     '#rows' => !empty($field['widget']['rows']) ? $field['widget']['rows'] : 10,
@@ -357,8 +380,8 @@
     '#type_name' => $element['#type_name'],
     '#delta' => $element['#delta'],
     '#columns' => $element['#columns'],
-    '#prefix' => '<div class="mee-wrap-editor-library">',
-    '#suffix' => '</div>',
+#    '#prefix' => '<div class="mee-wrap-editor-library">',
+#    '#suffix' => '</div>',
     '#dnd-enabled' => TRUE,
     '#dnd-settings' => array(
       'drop_selector' => '#'. $element['#id'] .' .drop',
@@ -370,9 +393,9 @@
     $filter_key  = (count($element['#columns']) == 2) ? $element['#columns'][1] : 'format';
     $format = isset($element['#value'][$filter_key]) ? $element['#value'][$filter_key] : FILTER_FORMAT_DEFAULT;
     $parents = array_merge($element['#parents'] , array($filter_key));
-    $element[$filter_key] = filter_form($format, 1, $parents);
-    $element[$filter_key]['#prefix'] = '<div class="mee-filter-form">';
-    $element[$filter_key]['#suffix'] = '</div>';
+    $element['mee'][$filter_key] = filter_form($format, 1, $parents);
+    $element['mee'][$filter_key]['#prefix'] = '<div class="mee-filter-form">';
+    $element['mee'][$filter_key]['#suffix'] = '</div>';
   }
 
   // Used so that hook_field('validate') knows where to flag an error.
@@ -380,6 +403,12 @@
     '#type' => 'value',
     '#value' => implode('][', array_merge($element['#parents'], array($field_key))),
   );
+  $element['mee']['short'] = array(
+    '#type'  => 'textarea',
+    '#title' => 'Contenu court',
+    '#rows'  =>  5,
+    '#weight' => 100
+  );
 
 
   return $element;
@@ -400,6 +429,28 @@
   return $element['#children'];
 }
 
+function theme_mee_ressource_manager(&$form) {
+  static $count = 0;
+  $id = 'mee-ressource-manager-'. $count;
+  drupal_add_tabledrag($id, 'order', 'sibling', 'mee-rm-weight');
+  $count++;
+  $header = array('', t('Title'), t('Weight'));
+  $rows = array();
+  foreach(element_children($form) as $key) {
+    $form[$key]['weight']['#attributes']['class'] = 'mee-rm-weight';
+
+    $row = array('');
+    $row[] = drupal_render($form[$key]['title']);
+    $row[] = drupal_render($form[$key]['weight']);
+    $rows[] = array('data' => $row, 'class' => 'draggable');
+  }
+  $output = theme('table', $header, $rows, array(
+    'id'    => $id,
+    'class' => 'mee-ressource-manager'
+  ));
+  $output .= drupal_render($form);
+  return $output;
+}