Browse Source

bookmarks fixing

Signed-off-by: bachy <git@g-u-i.net>
bachy 12 years ago
parent
commit
06a4d254c2

File diff suppressed because it is too large
+ 0 - 0
js/materio_flag-ck.js


+ 71 - 39
js/materio_flag.js

@@ -52,40 +52,48 @@ MaterioFlag = function(){
       var block = '#block-materio-flag-materio-flag-mylists';
     }
 
-    if(type == 'lists'){
-
-      // nav block
-      $('a.open-list:not(.ajax-processed)', '#block-materio-flag-materio-flag-mylists-nav').each(function(index){
-        $this = $(this)
-          .bind('click', onClickOpenLink)
-          .addClass('ajax-processed');
-
-        var name = $this.attr('class').match(/flag_lists_[^_]+_[0-9]+/);
-        // trace('MaterioFlag :: name', name);
-        $('<span class="preview"><i class="icon-eye-open"></i></span>').attr('name', name).insertAfter($this).bind('click', onClickShowPreview);
-      });
-        
-      // preview block
-      $('section.flag-list:not(.ajax-processed)', '#block-materio-flag-materio-flag-mylists').each(function(index){
-        var name = $(this).attr('class').match(/flag_lists_[^_]+_[0-9]+/);
-        $('<i class="icon-remove"></i>').appendTo($('h2.listname', this)).attr('name', name).bind('click', onClickClosePreview);
-
-        $('a.open-list',  this).bind('click', onClickOpenLink);
+    switch(type){
+      case 'bookmarks':
+        var name = type;
+        $('h2 .listname', block).attr('name', name).bind('click', onClickShowPreview);
+        $('<i class="icon-remove"></i>').appendTo($('h2', block)).attr('name', name).bind('click', onClickClosePreview);
+        // $('<span class="preview"><i class="icon-eye-open"></i></span>').appendTo($('h2', block)).bind('click', onClickShowPreview);
+        // if(!readCookie('materiobookmarkspreviewopened')){
+        //   showPreview('bookmarks', block);
+        // }else{
+        // }
+        break;
+      case 'lists':
+        // nav block
+        $('a.open-list:not(.ajax-processed)', '#block-materio-flag-materio-flag-mylists-nav').each(function(index){
+          $this = $(this)
+            .bind('click', onClickOpenLink)
+            .addClass('ajax-processed');
+
+          var name = $this.attr('class').match(/flag_lists_[^_]+_[0-9]+/);
+          // trace('MaterioFlag :: name', name);
+          $('<span class="preview"><i class="icon-eye-open"></i></span>').attr('name', name).insertAfter($this).bind('click', onClickShowPreview);
+        });
       
-      }).addClass('ajax-processed');
+        // preview block
+        $('section.flag-list:not(.ajax-processed)', '#block-materio-flag-materio-flag-mylists').each(function(index){
+          var name = $(this).attr('class').match(/flag_lists_[^_]+_[0-9]+/);
+          $('<i class="icon-remove"></i>').appendTo($('h2.listname', this)).attr('name', name).bind('click', onClickClosePreview);
 
-      // trigger refresh block event for enabling lazyload images
-      setTimeout(function(){
-        $.event.trigger({
-          type : 'my'+type+'-block-builded',
-          block : block,
-          name : name
-        });  
-      },10);
-      
+          $('a.open-list',  this).bind('click', onClickOpenLink);
+        
+        }).addClass('ajax-processed');
+        break;
     }
 
-    
+    // trigger refresh block event for enabling lazyload images
+    setTimeout(function(){
+      $.event.trigger({
+        type : 'my'+type+'-block-builded',
+        block : block,
+        name : name
+      });  
+    },10);
 
     // trace('MaterioFlag :: activename', activename);
     if(activename == undefined)
@@ -93,9 +101,7 @@ MaterioFlag = function(){
 
     // trace('MaterioFlag :: activename', activename);
     if(activename)
-      showPreview(activename);
-
-    
+      showPreview(activename, block);    
   };
 
   function refreshBlocks(name){
@@ -136,6 +142,14 @@ MaterioFlag = function(){
     if (typeof Drupal.flagLink != 'undefined')
       Drupal.flagLink(container);
 
+    if(isList()){
+      var fid = $('.materio-flags-list', '#content').attr('fid');
+      $('li.unflag-action.fid-'+fid+' a:not(.ajax-processed), li.flag-bookmarks a.unflag-action:not(.ajax-processed)')
+        .bind('click', onUnflagList)
+        .addClass('ajax-processed');
+    }
+      
+
     $('a.flag-lists-create:not(.ajax-processed)', container)
       .bind('click', onClickCreatLink)
       .addClass('ajax-processed');
@@ -150,12 +164,12 @@ MaterioFlag = function(){
   */
   function onClickShowPreview(event){
     //trace('MaterioFlag :: onClickShowPreview', event);
-    showPreview($(this).attr('name'));
+    showPreview($(this).attr('name'), $(this).parent('.block').attr('id'));
   };
 
-  function showPreview(name){
+  function showPreview(name, block){
     //trace('MaterioFlag :: showPreview', name);
-    $('section.'+name, '#block-materio-flag-materio-flag-mylists').addClass('active')
+    $('section.'+name, block).addClass('active')
       .siblings('section').removeClass('active');
 
     createCookie('materiomyflaglistsopened', name, 1);
@@ -166,7 +180,11 @@ MaterioFlag = function(){
   function onClickClosePreview(event){
     //trace('MaterioFlag :: onClickClosePreview', event);
     eraseCookie('materiomyflaglistsopened');
-    $(this).parents('section.flag-list').removeClass('active');
+    if($(this).attr('name') == 'bookmarks'){
+      $(this).parents('.block').find('section.bookmarks').removeClass('active');  
+    }else{
+      $(this).parents('section.flag-list').removeClass('active');  
+    }
 
     $.event.trigger('init-layout');
   };
@@ -321,8 +339,13 @@ MaterioFlag = function(){
         // $('input.name', $(this)).val('');
         // dialog.dialog('close');
         //trace('MaterioFlag :: created list : data', data);
+        if($link.attr('nid') && $link.attr('token')){
+          flagEntityWithList(data.flag.name, $link.attr('nid'), $link.attr('token'));
+        }else{
+          refreshBlocks(data.flag.name);
+          refreshNodeLinks();
+        }
 
-        flagEntityWithList(data.flag.name, $link.attr('nid'), $link.attr('token'));
         $modal.remove();
       }
     });
@@ -523,7 +546,16 @@ MaterioFlag = function(){
         $modal.remove();
       }
     });
-  }
+  };
+
+  /**
+  * onUnflagList()
+  */
+  function onUnflagList(event){
+    //trace('onUnflagList', event);
+    $(this).parents('article.node').addClass('removed');
+
+  };
 
   /**
   *

+ 14 - 6
materio_flag.module

@@ -37,13 +37,18 @@ function materio_flag_menu() {
     'file' => 'materio_flag.pages.inc',
   );
 
-
   $items['materioflag/refresh/block/bookmarks'] = $base+array(
     'access arguments' => array('flag bookmarks'),
     'page callback' => 'materio_flag_refresh_block',
     'page arguments' => array(3),
   );
 
+  $items['bookmarks'] = $base+array(
+    'access arguments' => array('flag bookmarks'),
+    'page callback' => 'materio_flag_user_bookmarks',
+    'page arguments' => array(),
+  );
+
   $items['materioflag/refresh/block/lists'] = $base+array(
     'access arguments' => array('create flag lists'),
     'page callback' => 'materio_flag_refresh_block',
@@ -156,7 +161,9 @@ function materio_flag_block_view($delta = '') {
   	      foreach ($userflags['bookmarks'] as $nid => $flag) {
         		$userbookmarks[] = node_load($nid);
   	      }
-  	      $block['subject'] = t('My bookmarks (@len)', array("@len"=>count($userbookmarks)));
+          // TODO:  put this title generation on a theme function
+          $subject = '<span class="listname">'.t('My bookmarks (@len) ', array("@len"=>count($userbookmarks))).'</span>';
+  	      $block['subject'] = $subject . l('<i class="icon-resize-full"></i>', 'bookmarks', array('html'=>true, 'attributes' => array('class' => array('open-list')),)); // 
   	      $block['content'] = theme('materio_flag_mybookmarks_block', array("bookmarks"=>$userbookmarks, "viewmode"=>"bookmark"));
         }else{
         	$block['subject'] = t('My bookmarks');
@@ -215,16 +222,17 @@ function materio_flag_block_view($delta = '') {
           $flag->flaged_content = $flaged_content;
           $flags[$name] = $flag;
         }
-        if($flags){
+        // if($flags){
           // $block['subject'] = t('My !listname'.'s', array('!listname'=>variable_get('flag_lists_name', 'list')));
           $block['subject'] = t('My '.variable_get('flag_lists_name', 'list').'s');
         
           $block['content'] = theme('materio_flag_mylists_nav_block', array("flags"=>$flags));
           // $block['content'] = theme('flag_lists_user_page', array('uid' => $user->uid));
-        }
+        // }
         # what happend if no flags yet
         // else{
-        //   $block['content'] = t('No !listname yet. Add !listname on clicking on results star', array('!listname'=>variable_get('flag_lists_name', 'list')));
+        //   $block['subject'] = t('My '.variable_get('flag_lists_name', 'list').'s');
+        // //   $block['content'] = t('No !listname yet. Add !listname on clicking on results star', array('!listname'=>variable_get('flag_lists_name', 'list')));
         // }
       }
       break;
@@ -339,7 +347,7 @@ function materio_flag_get_entity_links($entity, $type, $view_mode = null){
 
         $items[] = array(
           'data' => $link,
-          'class' => array('flag-lists-link', $action.'-action'),
+          'class' => array('flag-lists-link', $action.'-action', 'fid-'.$flag->fid),
         );
 
       }

+ 48 - 1
materio_flag.pages.inc

@@ -333,6 +333,54 @@ function materio_flag_nodelinks(){
   drupal_json_output($rep);  
 }
 
+function materio_flag_user_bookmarks(){
+  global $user;
+  
+  drupal_set_title(t('My bookmarks'), PASS_THROUGH);
+  
+  $flaged = flag_get_user_flags('node');
+  // dsm($flaged, 'flaged');
+
+  $flag = flag_get_flag('bookmarks');
+  $flaged_content = $flaged['bookmarks'];
+  // dsm($flaged_content, 'flaged_content');
+
+  $viewmode = isset($user->data['materiosearchapi_viewmode']) ? $user->data['materiosearchapi_viewmode'] : variable_get('defaultviewmode', 'full');
+
+  $limit = variable_get($viewmode.'_limite', '10');
+  $offset = pager_find_page() * $limit;
+  $count = count($flaged_content);
+  $max = $offset+$limit > $count ? $count : $offset+$limit;
+
+  $i = 0;
+  foreach ($flaged_content as $id => $item) {
+    if($i >= $offset){
+      if($i < $max){
+        if($item->entity_type == 'node'){
+          $items[] = node_load($id);
+        }
+      }else{
+        break;
+      }
+    }
+  }
+  
+  $ret['#items'] = $items;
+  $ret['#theme'] = 'materio_flag_mylists_list';
+  $ret['#view_mode'] = $viewmode;
+  $ret['#fid'] = $flag->fid;
+  $ret['#count'] = $count;
+  $ret['#name'] = variable_get('flag_lists_name', 'list');
+  $ret['#title'] = $flag->title;
+
+  pager_default_initialize($count, $limit);
+  $ret['#pager'] = theme('pager');
+
+  drupal_add_js(drupal_get_path('module', 'materio_flag').'/js/materio_flag-ck.js');
+
+  return $ret;
+}
+
 function materio_flag_user_lists($fid){
   global $user;
   $flag = flag_lists_get_flag($fid);
@@ -368,7 +416,6 @@ function materio_flag_user_lists($fid){
   $ret['#pager'] = theme('pager');
 
   return $ret;
-
 }
 
 function materio_flag_ajax_list($fid, $page = 0){

+ 1 - 1
templates/materio-flag-mybookmarks-block.tpl.php

@@ -1,4 +1,4 @@
 
-<section class="mybookmarks">
+<section class="bookmarks">
 	<?php print render(entity_view('node', $bookmarks, $viewmode)); ?>
 </section>

+ 35 - 17
templates/materio-flag-mylists-nav-block.tpl.php

@@ -1,21 +1,39 @@
 <section class="mylists">
 	<ul>
-		<?php foreach ($flags as $name => $flag): ?>
-		<?php //dsm($flag, 'flag') ;?>
-			<li class="flaglist <?php print $flag->name; ?>">
-				<?php print l($flag->title . '<span class="count">('.count($flag->flaged_content).')</span>', 'lists/'.$flag->fid, array('html'=>true,'attributes'=>array('class'=>array('open-list', $flag->name)))); ?>
-				<?php if(flag_lists_is_owner('edit', $flag->fid)): ?>
-					<?php 
-					print l('<i class="icon-wrench"></i>', 
-						'flags/lists/edit/'.$flag->fid, 
-						array(
-							'html'=>true,
-							'attributes'=>array('class'=>array('edit-list', $flag->name)),
-						)
-					); 
-					?>
-				<?php endif; ?>
-			</li>
-		<?php endforeach; ?>
+		<?php if($flags): ?>
+			<?php foreach ($flags as $name => $flag): ?>
+			<?php //dsm($flag, 'flag') ;?>
+				<li class="flaglist <?php print $flag->name; ?>">
+					<?php print l($flag->title . '<span class="count">('.count($flag->flaged_content).')</span>', 'lists/'.$flag->fid, array('html'=>true,'attributes'=>array('class'=>array('open-list', $flag->name)))); ?>
+					<?php if(flag_lists_is_owner('edit', $flag->fid)): ?>
+						<?php 
+						print l('<i class="icon-wrench"></i>', 
+							'flags/lists/edit/'.$flag->fid, 
+							array(
+								'html'=>true,
+								'attributes'=>array('class'=>array('edit-list', $flag->name)),
+							)
+						); 
+						?>
+					<?php endif; ?>
+				</li>
+			<?php endforeach; ?>
+		<?php else: ?>
+			<?php 
+				#create new list
+		    $create_link = l(
+		      '<i class="icon-plus"></i>&nbsp;<span>' . t('New @name', array('@name' => t(variable_get('flag_lists_name', 'list')))) . '</span>', 
+		      'flag-lists/add/materiau',
+		      array(
+		        'attributes' => array(
+		          'class' => array('flag-lists-create'),
+		          'title' => t('create a new @name.', array('@name'=>t(variable_get('flag_lists_name', 'list')))),
+		        ),
+		        'html' => TRUE,
+		      )
+		    );
+			?>
+			<li class="flag-lists-create"><?php print $create_link; ?>	</li>
+		<?php endif; ?>
 	</ul>
 </section>

Some files were not shown because too many files changed in this diff