1212
1313namespace Omines \DataTablesBundle \Twig ;
1414
15- use Omines \DataTablesBundle \Column \AbstractColumn ;
1615use Omines \DataTablesBundle \DataTable ;
1716use Symfony \Component \Translation \TranslatorInterface ;
1817
@@ -37,12 +36,6 @@ public function __construct(TranslatorInterface $translator)
3736 public function getFunctions ()
3837 {
3938 return [
40- new \Twig_SimpleFunction ('datatable ' , [$ this , 'datatable ' ],
41- ['is_safe ' => ['html ' ], 'needs_environment ' => true ]),
42- new \Twig_SimpleFunction ('datatable_html ' , [$ this , 'datatableHtml ' ],
43- ['is_safe ' => ['html ' ], 'needs_environment ' => true ]),
44- new \Twig_SimpleFunction ('datatable_js ' , [$ this , 'datatableJs ' ],
45- ['is_safe ' => ['html ' ], 'needs_environment ' => true ]),
4639 new \Twig_SimpleFunction ('datatable_settings ' , function (DataTable $ dataTable ) {
4740 return json_encode ([
4841 'name ' => $ dataTable ->getName (),
@@ -55,81 +48,39 @@ public function getFunctions()
5548 ];
5649 }
5750
58- public function datatable (\Twig_Environment $ twig , DataTable $ datatable , $ options = [], $ parameters = [])
59- {
60- return $ this ->render ($ twig , '@DataTables/datatable.html.twig ' , $ datatable , $ options , $ parameters );
61- }
62-
63- public function datatableHtml (\Twig_Environment $ twig , DataTable $ datatable , $ options = [], $ parameters = [])
64- {
65- return $ this ->render ($ twig , '@DataTables/datatable_html.html.twig ' , $ datatable , $ options , $ parameters );
66- }
67-
68- public function datatableJs (\Twig_Environment $ twig , DataTable $ datatable , $ options = [], $ parameters = [])
69- {
70- return $ this ->render ($ twig , '@DataTables/datatable_js.html.twig ' , $ datatable , $ options , $ parameters );
71- }
72-
73- private function render (\Twig_Environment $ twig , string $ template , DataTable $ datatable , $ options = [], $ parameters = [])
74- {
75- return $ twig ->render ($ template , array_merge ([
76- 'datatable ' => $ datatable ,
77- 'options ' => $ this ->getOptions ($ datatable , $ options ),
78- ], $ parameters ));
79- }
80-
81- private function getOptions (DataTable $ datatable , $ options )
82- {
83- $ result = array_merge ($ datatable ->getOptions (), $ options );
84-
85- $ result ['columns ' ] = array_map (
86- function (AbstractColumn $ column ) {
87- return [
88- 'data ' => $ column ->getName (),
89- 'orderable ' => $ column ->isOrderable (),
90- 'searchable ' => $ column ->isSearchable (),
91- 'visible ' => $ column ->isVisible (),
92- 'className ' => $ column ->getClassName (),
93- ];
94- }, $ datatable ->getColumns ());
95-
96- $ result ['language ' ] = $ this ->getLanguageSettings ($ datatable );
97-
98- return $ result ;
99- }
100-
10151 /**
10252 * @param DataTable $dataTable
10353 * @return array
10454 */
10555 private function getLanguageSettings (DataTable $ dataTable )
10656 {
10757 $ locale = $ this ->translator ->getLocale ();
108- if ($ dataTable ->isLanguageFromCDN () && array_key_exists ($ locale , $ this -> languageCDNFile )) {
109- return ['url ' => " //cdn.datatables.net/plug-ins/1.10.15/i18n/ { $ this -> languageCDNFile [$ locale ]}" ];
58+ if ($ dataTable ->isLanguageFromCDN () && array_key_exists ($ locale , self :: LANGUAGES_IN_CDN )) {
59+ return ['url ' => ' //cdn.datatables.net/plug-ins/1.10.15/i18n/ ' . self :: LANGUAGES_IN_CDN [$ locale ]];
11060 } else {
11161 $ domain = $ dataTable ->getTranslationDomain ();
62+
11263 return [
113- 'processing ' => $ this ->translator ->trans ('datatable.datatable.processing ' , $ domain ),
114- 'search ' => $ this ->translator ->trans ('datatable.datatable.search ' , $ domain ),
115- 'lengthMenu ' => $ this ->translator ->trans ('datatable.datatable.lengthMenu ' , $ domain ),
116- 'info ' => $ this ->translator ->trans ('datatable.datatable.info ' , $ domain ),
117- 'infoEmpty ' => $ this ->translator ->trans ('datatable.datatable.infoEmpty ' , $ domain ),
118- 'infoFiltered ' => $ this ->translator ->trans ('datatable.datatable.infoFiltered ' , $ domain ),
119- 'infoPostFix ' => $ this ->translator ->trans ('datatable.datatable.infoPostFix ' , $ domain ),
120- 'loadingRecords ' => $ this ->translator ->trans ('datatable.datatable.loadingRecords ' , $ domain ),
121- 'zeroRecords ' => $ this ->translator ->trans ('datatable.datatable.zeroRecords ' , $ domain ),
122- 'emptyTable ' => $ this ->translator ->trans ('datatable.datatable.emptyTable ' , $ domain ),
123- 'searchPlaceholder ' => $ this ->translator ->trans ('datatable.datatable.searchPlaceholder ' , $ domain ),
64+ 'processing ' => $ this ->translator ->trans ('datatable.datatable.processing ' , [], $ domain ),
65+ 'search ' => $ this ->translator ->trans ('datatable.datatable.search ' , [], $ domain ),
66+ 'lengthMenu ' => $ this ->translator ->trans ('datatable.datatable.lengthMenu ' , [], $ domain ),
67+ 'info ' => $ this ->translator ->trans ('datatable.datatable.info ' , [], $ domain ),
68+ 'infoEmpty ' => $ this ->translator ->trans ('datatable.datatable.infoEmpty ' , [], $ domain ),
69+ 'infoFiltered ' => $ this ->translator ->trans ('datatable.datatable.infoFiltered ' , [], $ domain ),
70+ 'infoPostFix ' => $ this ->translator ->trans ('datatable.datatable.infoPostFix ' , [], $ domain ),
71+ 'loadingRecords ' => $ this ->translator ->trans ('datatable.datatable.loadingRecords ' , [], $ domain ),
72+ 'zeroRecords ' => $ this ->translator ->trans ('datatable.datatable.zeroRecords ' , [], $ domain ),
73+ 'emptyTable ' => $ this ->translator ->trans ('datatable.datatable.emptyTable ' , [], $ domain ),
74+ 'searchPlaceholder ' => $ this ->translator ->trans ('datatable.datatable.searchPlaceholder ' , [], $ domain ),
12475 'paginate ' => [
125- 'first ' => $ this ->translator ->trans ('datatable.datatable.paginate.first ' , $ domain ),
126- 'previous ' => $ this ->translator ->trans ('datatable.datatable.paginate.previous ' , $ domain ),
127- 'next ' => $ this ->translator ->trans ('datatable.datatable.paginate.next ' , $ domain ),
128- 'last ' => $ this ->translator ->trans ('datatable.datatable.paginate.last ' , $ domain ),
76+ 'first ' => $ this ->translator ->trans ('datatable.datatable.paginate.first ' , [], $ domain ),
77+ 'previous ' => $ this ->translator ->trans ('datatable.datatable.paginate.previous ' , [], $ domain ),
78+ 'next ' => $ this ->translator ->trans ('datatable.datatable.paginate.next ' , [], $ domain ),
79+ 'last ' => $ this ->translator ->trans ('datatable.datatable.paginate.last ' , [], $ domain ),
12980 ],
13081 'aria ' => [
131- 'sortAscending ' => $ this ->translator ->trans ('datatable.datatable.aria.sortAscending ' , $ domain ),
132- 'sortDescending ' => $ this ->translator ->trans ('datatable.datatable.aria.sortDescending ' , $ domain ),
82+ 'sortAscending ' => $ this ->translator ->trans ('datatable.datatable.aria.sortAscending ' , [], $ domain ),
83+ 'sortDescending ' => $ this ->translator ->trans ('datatable.datatable.aria.sortDescending ' , [], $ domain ),
13384 ],
13485 ];
13586 }
@@ -145,24 +96,7 @@ public function getName()
14596 return 'DataTablesBundle ' ;
14697 }
14798
148- protected $ callbackMethodName = [
149- 'createdRow ' ,
150- 'drawCallback ' ,
151- 'footerCallback ' ,
152- 'formatNumber ' ,
153- 'headerCallback ' ,
154- 'infoCallback ' ,
155- 'initComplete ' ,
156- 'preDrawCallback ' ,
157- 'rowCallback ' ,
158- 'stateLoadCallback ' ,
159- 'stateLoaded ' ,
160- 'stateLoadParams ' ,
161- 'stateSaveCallback ' ,
162- 'stateSaveParams ' ,
163- ];
164-
165- protected $ languageCDNFile = [
99+ const LANGUAGES_IN_CDN = [
166100 'af ' => 'Afrikaans.json ' ,
167101 'ar ' => 'Arabic.json ' ,
168102 'az ' => 'Azerbaijan.json ' ,
0 commit comments