Mercurial > defr > drupal > scald > mee
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; +}
