Pārlūkot izejas kodu

Evolution #673: Modération plus rapide/facile

Sevajol Bastien 11 gadus atpakaļ
vecāks
revīzija
9b52c8100d

+ 20 - 4
src/Muzich/AdminBundle/Controller/Moderate_comment/EditController.php Parādīt failu

@@ -5,6 +5,7 @@ namespace Muzich\AdminBundle\Controller\Moderate_comment;
5 5
 use Muzich\CoreBundle\lib\Controller as BaseController;
6 6
 use Muzich\CoreBundle\Managers\CommentsManager;
7 7
 use Symfony\Component\HttpFoundation\RedirectResponse;
8
+use Symfony\Component\HttpFoundation\Response;
8 9
 
9 10
 class EditController extends BaseController
10 11
 {
@@ -49,8 +50,19 @@ class EditController extends BaseController
49 50
     
50 51
     $this->getDoctrine()->getEntityManager()->flush();
51 52
     
52
-    $this->get('session')->setFlash('success', $this->get('translator')->trans("object.edit.success", array(), 'Admingenerator') );
53
-    return new RedirectResponse($this->generateUrl("Muzich_AdminBundle_Moderate_comment_list" ));
53
+    if (!$this->getRequest()->isXmlHttpRequest())
54
+    {
55
+      $this->get('session')->setFlash('success', $this->get('translator')->trans("object.edit.success", array(), 'Admingenerator') );
56
+      return new RedirectResponse($this->generateUrl("Muzich_AdminBundle_Moderate_comment_list" ));
57
+    }
58
+    return $this->getJsonEmptyResponse();
59
+  }
60
+  
61
+  protected function getJsonEmptyResponse()
62
+  {
63
+    $response = new Response(json_encode(array()));
64
+    $response->headers->set('Content-Type', 'application/json; charset=utf-8');
65
+    return $response;
54 66
   }
55 67
   
56 68
   public function refuseAction($element_id, $date)
@@ -76,8 +88,12 @@ class EditController extends BaseController
76 88
     $this->getDoctrine()->getEntityManager()->persist($element);
77 89
     $this->getDoctrine()->getEntityManager()->flush();
78 90
     
79
-    $this->get('session')->setFlash('success', $this->get('translator')->trans("object.edit.success", array(), 'Admingenerator') );
80
-    return new RedirectResponse($this->generateUrl("Muzich_AdminBundle_Moderate_comment_list" ));
91
+    if (!$this->getRequest()->isXmlHttpRequest())
92
+    {
93
+      $this->get('session')->setFlash('success', $this->get('translator')->trans("object.edit.success", array(), 'Admingenerator') );
94
+      return new RedirectResponse($this->generateUrl("Muzich_AdminBundle_Moderate_comment_list" ));
95
+    }
96
+    return $this->getJsonEmptyResponse();
81 97
   }
82 98
   
83 99
 }

+ 20 - 4
src/Muzich/AdminBundle/Controller/Moderate_tag/EditController.php Parādīt failu

@@ -5,6 +5,7 @@ namespace Muzich\AdminBundle\Controller\Moderate_tag;
5 5
 use Admingenerated\MuzichAdminBundle\BaseModerate_tagController\EditController as BaseEditController;
6 6
 use Muzich\CoreBundle\Managers\TagManager;
7 7
 use Symfony\Component\HttpFoundation\RedirectResponse;
8
+use Symfony\Component\HttpFoundation\Response;
8 9
 
9 10
 class EditController extends BaseEditController
10 11
 {
@@ -28,8 +29,19 @@ class EditController extends BaseEditController
28 29
     $tagManager = new TagManager();
29 30
     $tagManager->moderateTag($this->getDoctrine(), $tag, true);
30 31
     
31
-    $this->get('session')->setFlash('success', $this->get('translator')->trans("object.edit.success", array(), 'Admingenerator') );
32
-    return new RedirectResponse($this->generateUrl("Muzich_AdminBundle_Moderate_tag_list" ));
32
+    if (!$this->getRequest()->isXmlHttpRequest())
33
+    {
34
+      $this->get('session')->setFlash('success', $this->get('translator')->trans("object.edit.success", array(), 'Admingenerator') );
35
+      return new RedirectResponse($this->generateUrl("Muzich_AdminBundle_Moderate_tag_list" ));
36
+    }
37
+    return $this->getJsonEmptyResponse();
38
+  }
39
+  
40
+  protected function getJsonEmptyResponse()
41
+  {
42
+    $response = new Response(json_encode(array()));
43
+    $response->headers->set('Content-Type', 'application/json; charset=utf-8');
44
+    return $response;
33 45
   }
34 46
   
35 47
   public function refuseAction($pk)
@@ -57,8 +69,12 @@ class EditController extends BaseEditController
57 69
     
58 70
     $this->getDoctrine()->getEntityManager()->flush();
59 71
     
60
-    $this->get('session')->setFlash('success', $this->get('translator')->trans("object.edit.success", array(), 'Admingenerator') );
61
-    return new RedirectResponse($this->generateUrl("Muzich_AdminBundle_Moderate_tag_list" ));
72
+    if (!$this->getRequest()->isXmlHttpRequest())
73
+    {
74
+      $this->get('session')->setFlash('success', $this->get('translator')->trans("object.edit.success", array(), 'Admingenerator') );
75
+      return new RedirectResponse($this->generateUrl("Muzich_AdminBundle_Moderate_tag_list" ));
76
+    }
77
+    return $this->getJsonEmptyResponse();
62 78
   }
63 79
   
64 80
 }

+ 3 - 1
src/Muzich/AdminBundle/Resources/config/Moderate_element-generator.yml Parādīt failu

@@ -35,9 +35,11 @@ builders:
35 35
           params:
36 36
             pk: "{{ Element.id }}"
37 37
           confirm: Sure to ACCEPT and CLEAN ?
38
-        refuse:
38
+          icon: icon-ok-sign
39
+        reject:
39 40
           route: Muzich_AdminBundle_Moderate_element_refuse
40 41
           params:
41 42
             pk: "{{ Element.id }}"
42 43
           confirm: Sure to REFUSE and REMOVE ?
44
+          icon: icon-trash
43 45
         list: ~

+ 4 - 2
src/Muzich/AdminBundle/Resources/config/Moderate_tag-generator.yml Parādīt failu

@@ -14,10 +14,12 @@ builders:
14 14
       object_actions:
15 15
         accept:
16 16
           route: Muzich_AdminBundle_Moderate_tag_accept
17
-          confirm: Sure to ACCEPT ?
17
+          icon: icon-ok-sign
18
+          class: moderate_accept
18 19
         refuse:
19 20
           route: Muzich_AdminBundle_Moderate_tag_refuse
20
-          confirm: Sure to REFUSE ?
21
+          icon: icon-trash
22
+          class: moderate_refuse
21 23
       sort: [ tomoderate, DESC ]
22 24
       scopes:
23 25
         moderation: 

+ 0 - 19
src/Muzich/AdminBundle/Resources/views/Dashboard/dashboard.html.twig~HEAD Parādīt failu

@@ -1,19 +0,0 @@
1
-{% extends base_admin_template %}
2
-
3
-{% block body %}    
4
-    <div class="row-fluid">
5
-      <div class="span3">
6
-        <div class="well well-small sidebar-nav">
7
-          {{ knp_menu_render('dashboard') }}
8
-        </div><!--/.well -->
9
-      </div><!--/span-->
10
-      <div class="span9">
11
-          {% block content %}
12
-          {% endblock %}
13
-      </div><!--/span-->
14
-    </div><!--/row-->
15
-{% endblock %}
16
-    
17
-{% block javascripts %}
18
-    {{ parent() }}
19
-{% endblock %}

+ 0 - 17
src/Muzich/AdminBundle/Resources/views/Dashboard/welcome.html.twig~HEAD Parādīt failu

@@ -1,17 +0,0 @@
1
-{% extends 'MuzichAdminBundle:Dashboard:dashboard.html.twig' %}
2
-
3
-{% block title %}Admingenerator{% endblock %}
4
-
5
-{% block content %}
6
-    <div class="hero-unit">          
7
-      {% block page_title %}
8
-          <header>
9
-              <h1>Muzi.ch Admin</h1>
10
-          </header>
11
-      {% endblock %}
12
-      <p>Administration interface of muzi.ch.</p>
13
-    </div>
14
-    <div class="row-fluid">
15
-      Ici prendron place les données statistiques
16
-    </div><!--/row-->
17
-{% endblock %}

+ 4 - 7
src/Muzich/AdminBundle/Resources/views/Moderate_commentList/list.html.twig Parādīt failu

@@ -66,17 +66,14 @@
66 66
               {% block list_object_actions %}
67 67
                 <td class="actions">
68 68
                   
69
-                  <a class="" href="{{ path("Muzich_AdminBundle_Moderate_comment_accept", { 'element_id': Comment.element_id, 'date' : Comment.date }) }}"
70
-                     data-confirm="{% trans from "Admingenerator" %}Sure to ACCEPT ?{% endtrans %}"
69
+                  <a class="moderate_accept" href="{{ path("Muzich_AdminBundle_Moderate_comment_accept", { 'element_id': Comment.element_id, 'date' : Comment.date }) }}"
71 70
                      rel="tooltip" data-original-title="{% trans from "Admingenerator" %}Accept{% endtrans %}">
72
-                    <i class="icon-asterisk"></i>
71
+                    <i class="icon-ok-sign"></i>
73 72
                   </a>
74 73
                   
75
-                                              
76
-                  <a class="" href="{{ path("Muzich_AdminBundle_Moderate_comment_refuse", { 'element_id': Comment.element_id, 'date' : Comment.date }) }}"
77
-                     data-confirm="{% trans from "Admingenerator" %}Sure to REFUSE ?{% endtrans %}"
74
+                  <a class="moderate_refuse" href="{{ path("Muzich_AdminBundle_Moderate_comment_refuse", { 'element_id': Comment.element_id, 'date' : Comment.date }) }}"
78 75
                      rel="tooltip" data-original-title="{% trans from "Admingenerator" %}Refuse{% endtrans %}">
79
-                    <i class="icon-asterisk"></i>
76
+                    <i class="icon-trash"></i>
80 77
                   </a>
81 78
                 
82 79
                 </td>

+ 2 - 0
src/Muzich/AdminBundle/Resources/views/base_admin_assetic_less.html.twig Parādīt failu

@@ -48,6 +48,8 @@
48 48
     <link rel="stylesheet" href="{{ asset('css/jquery-ui-1.10.1.autocomplete.min.css') }}" type="text/css" media="all" />
49 49
     <script type="text/javascript" src="{{ asset('js/jquery-ui-1.10.1.autocomplete.min.js') }}"></script>
50 50
     
51
+    <script type="text/javascript" src="{{ asset('js/admin.js') }}"></script>
52
+    
51 53
   </head>
52 54
 
53 55
   <body>

+ 0 - 164
src/Muzich/AdminBundle/Resources/views/base_admin_assetic_less.html.twig~HEAD Parādīt failu

@@ -1,164 +0,0 @@
1
-<!DOCTYPE html>
2
-<html>
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <title>{% block title %}Admin{% endblock %}</title>
6
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
-
8
-    {% block scripts_head %}
9
-        <!-- jquery.min.js -->
10
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/jquery-1.8.3.min.js') }}"></script>
11
-        
12
-        <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
13
-        <!--[if lt IE 9]>
14
-            <script src="{{ asset('bundles/admingeneratorgenerator/js/html5shiv/html5.js') }}"></script>
15
-        <![endif]-->
16
-    {% endblock %}
17
-
18
-    {% block stylesheets %}
19
-        <!-- bootstrap.min.css -->
20
-        <link rel="stylesheet" href="{{ asset('bundles/admingeneratorgenerator/css/bootstrap/bootstrap.css') }}" type="text/css" media="all" />
21
-        <link rel="stylesheet" href="{{ asset('bundles/admingeneratorgenerator/css/bootstrap/bootstrap-extended.css') }}" type="text/css" media="all" />
22
-        <link rel="stylesheet" href="{{ asset('bundles/admingeneratorgenerator/css/bootstrap/bootstrap-datepicker.css') }}" type="text/css" media="all" />
23
-        <link rel="stylesheet" href="{{ asset('bundles/admingeneratorgenerator/css/google/prettify.css') }}" type="text/css" media="all" />
24
-                    
25
-        <!-- bootstrap-responsive.min.css -->
26
-        <link rel="stylesheet" href="{{ asset('bundles/admingeneratorgenerator/css/bootstrap/bootstrap-responsive.css') }}" type="text/css" media="all" />
27
-        <link rel="stylesheet" href="{{ asset('bundles/admingeneratorgenerator/css/bootstrap/bootstrap-responsive-extended.css') }}" type="text/css" media="all" />
28
-        
29
-        <!-- admingenerator.min.css -->
30
-        <link rel="stylesheet" href="{{ asset('bundles/admingeneratorgenerator/css/admingenerator/general.css') }}" type="text/css" media="all" />
31
-        <link rel="stylesheet" href="{{ asset('bundles/admingeneratorgenerator/css/admingenerator/nested-list.css') }}" type="text/css" media="all" />
32
-        <link rel="stylesheet" href="{{ asset('bundles/admingeneratorgenerator/css/admingenerator/collection.css') }}" type="text/css" media="all" />
33
-        <link rel="stylesheet" href="{{ asset('bundles/admingeneratorgenerator/css/admingenerator/upload.css') }}" type="text/css" media="all" />
34
-        <link rel="stylesheet" href="{{ asset('bundles/admingeneratorgenerator/css/admingenerator/filetypeicons.css') }}" type="text/css" media="all" />
35
-        <link rel="stylesheet" href="{{ asset('bundles/admingeneratorgenerator/css/admingenerator/form/single-upload.css') }}" type="text/css" media="all" />
36
-    {% endblock %}
37
-
38
-    {% block icons %}
39
-        <!-- Favicon and touch icons -->
40
-        <link rel="shortcut icon" href="{{ asset('bundles/admingeneratorgenerator/ico/favicon.ico') }}">
41
-        <link rel="apple-touch-icon-precomposed" sizes="144x144" href="{{ asset('bundles/admingeneratorgenerator/ico/apple-touch-icon-144-precomposed.png') }}">
42
-        <link rel="apple-touch-icon-precomposed" sizes="114x114" href="{{ asset('bundles/admingeneratorgenerator/ico/apple-touch-icon-114-precomposed.png') }}">
43
-        <link rel="apple-touch-icon-precomposed" sizes="72x72" href="{{ asset('bundles/admingeneratorgenerator/ico/apple-touch-icon-72-precomposed.png') }}">
44
-        <link rel="apple-touch-icon-precomposed" href="{{ asset('bundles/admingeneratorgenerator/ico/apple-touch-icon-57-precomposed.png') }}">
45
-    {% endblock %}
46
-    
47
-    
48
-    <link rel="stylesheet" href="{{ asset('css/jquery-ui-1.10.1.autocomplete.min.css') }}" type="text/css" media="all" />
49
-    <script type="text/javascript" src="{{ asset('js/jquery-ui-1.10.1.autocomplete.min.js') }}"></script>
50
-    
51
-  </head>
52
-
53
-  <body>
54
-
55
-    <div class="navbar navbar-inverse navbar-fixed-top">
56
-      <div class="navbar-inner">
57
-        <div class="container">
58
-          <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
59
-            <span class="icon-bar"></span>
60
-            <span class="icon-bar"></span>
61
-            <span class="icon-bar"></span>
62
-          </a>
63
-          {% block logo %}
64
-            <a class="brand" href="{{ path('AdmingeneratorDashboard_welcome') }}">Admin</a>
65
-          {% endblock %}
66
-          <div class="nav-collapse collapse">
67
-            {% block profile %}
68
-              <ul class="nav pull-right">
69
-                <li><p class="navbar-text" style="padding-right: 10px;">{{ 'profile.welcome'|trans({'%username%': app.user ? app.user : 'anonymous'}, 'Admingenerator')|raw }}</li>
70
-                {% if app.user %}
71
-                  <li><button onclick="document.location='{{ path('fos_user_security_logout') }}'" class="btn " title="{{ 'profile.logout'|trans({}, 'Admingenerator') }}"><i class="icon-off"></i> {{ 'profile.logout'|trans({}, 'Admingenerator') }}</button></li>
72
-                {% else %}
73
-                  <li><button onclick="document.location='{{ path('fos_user_security_login') }}'" class="btn " title="{{ 'profile.login'|trans({}, 'Admingenerator') }}">{{ 'profile.login'|trans({}, 'Admingenerator') }}</button></li>
74
-                {% endif %}
75
-              </ul>
76
-            {% endblock %}
77
-            {% block menu %}
78
-              {{ knp_menu_render('admin') }}
79
-              {{ knp_menu_render('moderation') }}
80
-            {% endblock %}
81
-          </div><!--/.nav-collapse -->
82
-        </div>
83
-      </div>
84
-    </div>
85
-
86
-    <div class="container-fluid">
87
-        {% block flashes %}
88
-            <div id="flashes" class="row-fluid">
89
-                {% if app.session.hasFlash('success') %}
90
-                  <div class="alert alert-success">
91
-                    <button type="button" class="close" data-dismiss="alert">×</button>
92
-                    {{ app.session.flash('success')|raw }}
93
-                  </div>
94
-                {% endif %}
95
-                {% if app.session.hasFlash('error') %}
96
-                  <div class="alert alert-error">
97
-                    <button type="button" class="close" data-dismiss="alert">×</button>
98
-                    {{ app.session.flash('error')|raw }}
99
-                  </div>
100
-                {% endif %}
101
-            </div><!--/row-->
102
-        {% endblock %}
103
-
104
-        {% block body %}
105
-            <div class="row-fluid">
106
-            </div><!--/row-->
107
-        {% endblock %}
108
-
109
-      <hr>
110
-
111
-      <footer>
112
-        <p>
113
-          {% block footer %}
114
-              &copy; Symfony2Admingenerator {{ ("now"|date('Y') > 2012) ? '2012 - ' ~ "now"|date('Y') : '2012' }}
115
-          {% endblock %}
116
-        </p>
117
-      </footer>
118
-
119
-    </div> <!-- /container -->
120
-
121
-    {% block javascripts %}
122
-        <!-- bootstrap.min.js -->
123
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/bootstrap/bootstrap-transition.js') }}"></script>
124
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/bootstrap/bootstrap-alert.js') }}"></script>
125
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/bootstrap/bootstrap-modal.js') }}"></script>
126
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/bootstrap/bootstrap-dropdown.js') }}"></script>
127
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/bootstrap/bootstrap-scrollspy.js') }}"></script>
128
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/bootstrap/bootstrap-tab.js') }}"></script>
129
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/bootstrap/bootstrap-tooltip.js') }}"></script>
130
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/bootstrap/bootstrap-popover.js') }}"></script>
131
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/bootstrap/bootstrap-button.js') }}"></script>
132
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/bootstrap/bootstrap-collapse.js') }}"></script>
133
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/bootstrap/bootstrap-carousel.js') }}"></script>
134
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/bootstrap/bootstrap-typeahead-extended.js') }}"></script>
135
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/bootstrap/bootstrap-affix.js') }}"></script>
136
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/bootstrap/bootstrap-datepicker.js') }}"></script>
137
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/bootstrap/locales/bootstrap-datepicker.' ~ app.request.locale ~ '.js') }}"></script>
138
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/google/prettify.js') }}"></script>
139
-        
140
-        <!-- jquery-ui.min.js  -->
141
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/jquery-ui/jquery.ui.core.js') }}"></script>
142
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/jquery-ui/jquery.ui.widget.js') }}"></script>
143
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/jquery-ui/jquery.ui.mouse.js') }}"></script>
144
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/jquery-ui/jquery.ui.draggable.js') }}"></script>
145
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/jquery-ui/jquery.ui.droppable.js') }}"></script>
146
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/jquery-ui/jquery.ui.sortable.js') }}"></script>
147
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/jquery-ui/jquery.ui.effect.js') }}"></script>
148
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/jquery-ui/jquery.ui.effect-slide.js') }}"></script>
149
-       
150
-        <!-- blueimp.jquery-file-upload.min.js  -->
151
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/blueimp/blueimp.javascript-templates.min.js') }}"></script>
152
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/blueimp/blueimp.javascript-load-image.min.js') }}"></script>
153
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/blueimp/blueimp.canvas-to-blob.min.js') }}"></script>
154
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/blueimp/jquery.iframe-transport.js') }}"></script>
155
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/blueimp/jquery.fileupload.js') }}"></script>
156
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/blueimp/jquery.fileupload-fp.js') }}"></script>
157
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/blueimp/jquery.fileupload-ui.js') }}"></script>
158
-        
159
-        <!-- jquery.spin.min.js  -->
160
-        <script type="text/javascript" src="{{ asset('bundles/admingeneratorgenerator/js/spin/jquery.spin.js') }}"></script>
161
-    {% endblock %}
162
-
163
-  </body>
164
-</html>

+ 12 - 0
web/js/admin.js Parādīt failu

@@ -0,0 +1,12 @@
1
+$(document).ready(function(){
2
+  
3
+  $('a.moderate_accept, a.moderate_refuse').click(function(){
4
+    $.getJSON($(this).attr('href'), function(response) {
5
+      // Do query ...
6
+    });
7
+    $(this).parents('tr.list_trow').remove();
8
+    $('div.tooltip').remove();
9
+    return false;
10
+  });
11
+  
12
+});