add relaunch wp
authorymh <ymh.work@gmail.com>
Fri, 09 Dec 2011 04:53:56 +0100
changeset 61 1bc0ec8ed05b
parent 60 984ba20c150b
child 62 10be6b9e55e7
add relaunch wp
Controller/WikiTagController.php
Resources/config/routing.yml
Resources/public/css/wikiTag.css
Resources/public/js/wikiTag.js
Resources/views/WikiTag/TagListTable.html.twig
Resources/views/WikiTag/javascript.html.twig
--- a/Controller/WikiTagController.php	Fri Dec 09 02:27:20 2011 +0100
+++ b/Controller/WikiTagController.php	Fri Dec 09 04:53:56 2011 +0100
@@ -377,11 +377,7 @@
             // Here we are in the context of tag list.
             if($un_tag_created==true){
                 $em->flush();
-                $num_page = $this->getRequest()->request->get('num_page');
-                $nb_by_page = $this->getRequest()->request->get('nb_by_page');
-                $sort = $this->getRequest()->request->get('sort');
-                $searched = $this->getRequest()->request->get('searched');
-                return $this->renderAllTags($num_page, $nb_by_page, $sort, $searched);
+                return $this->renderAllTags();
             }
             else{
                 // The unsemantized version of the tag already exist, so we send an error.
@@ -417,11 +413,7 @@
             return $this->renderDocTags($id_doc, $this->getRequest()->request->get('wikitag_document_profile'));
         }
         else{
-            $num_page = $this->getRequest()->request->get('num_page');
-            $nb_by_page = $this->getRequest()->request->get('nb_by_page');
-            $sort = $this->getRequest()->request->get('sort');
-            $searched = $this->getRequest()->request->get('searched');
-            return $this->renderAllTags($num_page, $nb_by_page, $sort, $searched);
+            return $this->renderAllTags();
         }
     }
 
@@ -461,11 +453,7 @@
         }
         else{
             // In case we changed the alias from the tag list.
-            $num_page = $this->getRequest()->request->get('num_page');
-            $nb_by_page = $this->getRequest()->request->get('nb_by_page');
-            $sort = $this->getRequest()->request->get('sort');
-            $searched = $this->getRequest()->request->get('searched');
-            return $this->renderAllTags($num_page, $nb_by_page, $sort, $searched);
+            return $this->renderAllTags();
         }
     }
     
@@ -555,16 +543,11 @@
             return new Response(json_encode(array('error' => 'wikipedia_request_failed', 'message' => $e->getMessage())),400);
         }
         // We render the tag list.
-        $num_page = $this->getRequest()->request->get('num_page');
-        $nb_by_page = $this->getRequest()->request->get('nb_by_page');
-        $sort = $this->getRequest()->request->get('sort');
-        $searched = $this->getRequest()->request->get('searched');
-        return $this->renderAllTags($num_page, $nb_by_page, $sort, $searched);
+        return $this->renderAllTags();
     }
         
         
     /**
-     *
      * Resemantize the tag with its original label. Kind of undo if we changed the tag's label.
      *
      */
@@ -581,12 +564,29 @@
         }
         
         // We render the tag list.
-        $num_page = $this->getRequest()->request->get('num_page');
-        $nb_by_page = $this->getRequest()->request->get('nb_by_page');
-        $sort = $this->getRequest()->request->get('sort');
-        $searched = $this->getRequest()->request->get('searched');
-        return $this->renderAllTags($num_page, $nb_by_page, $sort, $searched);
+        return $this->renderAllTags();
     }
+    
+    /**
+     * Redo a Wikipedia search
+     * @return \Symfony\Component\HttpFoundation\Response|\Symfony\Bundle\FrameworkBundle\Controller\Response
+     */
+    public function relaunchWpSearchAction()
+    {
+        $id_tag = $this->getRequest()->request->get('tag_id');
+        $tag = $this->getDoctrine()->getRepository('WikiTagBundle:Tag')->findOneBy(array('id' => $id_tag));
+        // We update the tag label and its wikipedia info with the original label.
+        try {
+            $this->updateTagWithNewLabel($tag, $tag->getLabel());
+        }
+        catch (\Exception $e){
+            return new Response(json_encode(array('error' => 'wikipedia_request_failed', 'message' => $e->getMessage())),400);
+        }
+    
+        // We render the tag list.
+        return $this->renderAllTags();
+    }
+    
 
 
     /**
@@ -595,16 +595,14 @@
     private function updateTagWithNewLabel($tag, $label)
     {
         if($tag!=null && $label!=null){
-            if($label!=$tag->getLabel()){
-                // We get the Wikipedia informations for the sent label
-                $tag_label_normalized = WikiTagUtils::normalizeTag($label);
-                $wp_response = WikiTagUtils::getWikipediaInfo($tag_label_normalized);
-                $tag->setWikipediaInfo($wp_response);
-                // Save datas.
-                $em = $this->getDoctrine()->getEntityManager();
-                $em->persist($tag);
-                $em->flush();
-            }
+            // We get the Wikipedia informations for the sent label
+            $tag_label_normalized = WikiTagUtils::normalizeTag($label);
+            $wp_response = WikiTagUtils::getWikipediaInfo($tag_label_normalized);
+            $tag->setWikipediaInfo($wp_response);
+            // Save datas.
+            $em = $this->getDoctrine()->getEntityManager();
+            $em->persist($tag);
+            $em->flush();
         }
     }
 
@@ -612,9 +610,20 @@
     /**
      * Generic render partial template for tag list
      */
-    public function renderAllTags($num_page=NULL, $nb_by_page=NULL, $sort=NULL, $searched=NULL)
+    public function renderAllTags($num_page=null, $nb_by_page=null, $sort=null, $searched=null)
     {
-        
+        if(is_null($num_page)) {
+            $num_page = $this->getRequest()->request->get('num_page');
+        }
+        if(is_null($nb_by_page)) {
+            $nb_by_page = $this->getRequest()->request->get('nb_by_page');
+        }
+        if(is_null($sort)) {
+            $sort = $this->getRequest()->request->get('sort');
+        }
+        if(is_null($searched)) {
+            $searched = $this->getRequest()->request->get('searched');
+        }
         //We get the needed datas in an array($tags, $num_page, $nb_by_page, $searched, $sort, $reverse_sort, $pagerfanta);
         $ar = $this->getAllTags($num_page, $nb_by_page, $sort, $searched);
         $tags = $ar[0];
@@ -629,7 +638,6 @@
         	'reverse_sort' => $reverse_sort, 'route_for_documents_by_tag' => $this->container->getParameter("wiki_tag.route_for_documents_by_tag")));
     }
 
-
     /**
      * Generic to get all tags with the context (pagination number, nb by page, searched string, sort)
      */
--- a/Resources/config/routing.yml	Fri Dec 09 02:27:20 2011 +0100
+++ b/Resources/config/routing.yml	Fri Dec 09 04:53:56 2011 +0100
@@ -19,6 +19,9 @@
 wikitag_modify_tag_in_list:
     pattern:  /wtmtl
     defaults: { _controller: WikiTagBundle:WikiTag:modifyTag }
+wikitag_relaunch_wp_search:
+    pattern:  /wtrws
+    defaults: { _controller: WikiTagBundle:WikiTag:relaunchWpSearch }
 wikitag_reset_wp_info:
     pattern:  /wtrwi
     defaults: { _controller: WikiTagBundle:WikiTag:resetWpInfo }
--- a/Resources/public/css/wikiTag.css	Fri Dec 09 02:27:20 2011 +0100
+++ b/Resources/public/css/wikiTag.css	Fri Dec 09 04:53:56 2011 +0100
@@ -75,10 +75,21 @@
 .wikitag_updown_td span {
     display: none;
 }
+.wikitag_indicator {
+	cursor: progress;
+	background-image: url('../images/indicator.gif');
+}
+
 .wikitag_remove_wp_link {
 	cursor: pointer;
     background-image: url('../images/red_cross.png');
 }
+
+.wikitag_relaunch_wp_search {
+	cursor : pointer;
+	background-image:  url('../images/arrow_refresh.png');
+}
+
 .wikitag_remove_tag_from_list {
     cursor: pointer;
     background-image: url('../images/tag_remove.png');
--- a/Resources/public/js/wikiTag.js	Fri Dec 09 02:27:20 2011 +0100
+++ b/Resources/public/js/wikiTag.js	Fri Dec 09 04:53:56 2011 +0100
@@ -4,17 +4,27 @@
     // Tag simple operations : activate/unactivate wp link, reset wp info, remove wp link, remove tag from list
     $(".wikitag_reset_wp_info").click(function(e){
         if(confirm("Confirmez-vous le rétablissement du label original de ce tag ?")){
-            wikitag_update_tag(this);
+        	var id_tag = $(this).html();
+        	var btn = this;
+        	$(this).html("<img src='"+static_url+"/images/indicator.gif'>");
+            wikitag_update_tag(this, reset_wp_info_url, id_tag, function(){ $(btn).html(id_tag); });
+        }
+    });
+    $(".wikitag_relaunch_wp_search").click(function(e){
+        if(confirm("Confirmez-vous la relance de la recherche Wikipédia pour le tag \"" + $(this).attr('alt') + "\" ?")){
+        	$(this).toggleClass("wikitag_relaunch_wp_search wikitag_indicator");
+        	var btn = this;
+            wikitag_update_tag(this, relaunch_wp_search_url, $(this).attr('id'), function() { $(btn).toggleClass("wikitag_relaunch_wp_search wikitag_indicator");});
         }
     });
     $(".wikitag_remove_wp_link").click(function(e){
         if(confirm("Confirmez-vous le suppression du lien Wikipédia pour le tag \"" + $(this).attr('alt') + "\" ?")){
-            wikitag_update_tag(this);
+            wikitag_update_tag(this, remove_wp_link_url, $(this).attr('id'));
         }
     });
     $(".wikitag_remove_tag_from_list").click(function(){
         if(confirm("Confirmez-vous la suppression du tag \"" + $(this).attr('alt') + "\" de la liste courante ?")){
-            wikitag_update_tag(this);
+            wikitag_update_tag(this,remove_tag_from_list_url,$(this).attr('id'));
         }
     });
     
@@ -316,23 +326,9 @@
     });
 }
 
-function wikitag_update_tag(btn)
+function wikitag_update_tag(btn, url, id_tag, error_callback)
 {
     new_checked = false;
-    if ($(btn).is(".wikitag_remove_tag_from_list")) {
-        var url = remove_tag_from_list_url;
-        var id_tag = $(btn).attr('id');
-    }
-    else if ($(btn).is(".wikitag_reset_wp_info")) {
-        var url = reset_wp_info_url;
-        var id_tag = $(btn).html();
-        $(btn).html("<img src='"+static_url+"/images/indicator.gif'>");
-    }
-    else if ($(btn).is(".wikitag_remove_wp_link")) {
-        var url = remove_wp_link_url;
-        var id_tag = $(btn).attr('id');
-    }
-    
     // 2 cases : 
     // - ordered tag for one datasheet : $('#wikitag_document_id') is not null
     // - all tags list : $('#wikitag_document_id') is null and $('#num_page') and $('#nb_by_page') are not null
@@ -358,7 +354,7 @@
 		error: function(jqXHR, textStatus, errorThrown) {
 			resp = $.parseJSON(jqXHR.responseText);
 			alert(resp.message);
-			$(btn).html(id_tag);
+			error_callback && error_callback();
 		}
     });
 }
--- a/Resources/views/WikiTag/TagListTable.html.twig	Fri Dec 09 02:27:20 2011 +0100
+++ b/Resources/views/WikiTag/TagListTable.html.twig	Fri Dec 09 04:53:56 2011 +0100
@@ -69,12 +69,14 @@
             &nbsp;
             {% endif %}
         </td>
-        <td class="wikitag_category" id="{{tag.id}}">{% if tag.category %}{{ tag.category.label }}{% endif %}</td>
-        {% if tag.urlstatus and tag.urlstatus != 4 and tag.urlstatus != 0 %}  
-        <td class="wikitag_text_centered wikitag_td_icon wikitag_remove_wp_link" id="{{tag.id}}" alt="{{tag.label}}" ></td>
-        {% else %}
+        <td class="wikitag_category" id="{{tag.id}}">{% if tag.category %}{{ tag.category.label }}{% endif %}</td>        
+        {% if not tag.urlstatus or tag.urlstatus == 0 %}
+        <td class="wikitag_text_centered wikitag_td_icon wikitag_relaunch_wp_search" id="{{tag.id}}" alt="{{tag.label}}" ></td>
+        {% elseif   tag.urlstatus == 4 %}
         <td class="wikitag_text_centered wikitag_td_icon"></td>
-        % endif %}            
+        {% else %}        
+        <td class="wikitag_text_centered wikitag_td_icon wikitag_remove_wp_link" id="{{tag.id}}" alt="{{tag.label}}" ></td>        
+        {% endif %}            
         <td class="wikitag_alias" id="{{tag.id}}" >{% if tag.alias %}{{tag.alias}}{% endif %}</td>
         <td class="wikitag_text_centered">
         {% if nb_docs > 0 %}
--- a/Resources/views/WikiTag/javascript.html.twig	Fri Dec 09 02:27:20 2011 +0100
+++ b/Resources/views/WikiTag/javascript.html.twig	Fri Dec 09 04:53:56 2011 +0100
@@ -22,6 +22,7 @@
     var modify_tag_url = "{{ url('wikitag_modify_documenttag') }}";
     {% endif %}
     var reset_wp_info_url = "{{ url('wikitag_reset_wp_info') }}";
+    var relaunch_wp_search_url = "{{ url('wikitag_relaunch_wp_search') }}";
     var reorder_tag_datasheet_url = "{{ url('wikitag_reorder_tag_document') }}";
     var add_tag_url = "{{ url('wikitag_add_tag') }}";
     var remove_wp_link_url = "{{ url('wikitag_remove_wp_link') }}";