PageRenderTime 42ms CodeModel.GetById 15ms RepoModel.GetById 1ms app.codeStats 0ms

/docroot/modules/custom/gavias_sliderlayer/src/Controller/SliderController.php

https://gitlab.com/kryber/wizionary
PHP | 259 lines | 219 code | 33 blank | 7 comment | 16 complexity | f56aac44ea81d7a40116d63197e71ba9 MD5 | raw file
  1. <?php
  2. /**
  3. * @file
  4. * Contains \Drupal\gavias_sliderlayer\Controller\GroupSliderController.
  5. */
  6. namespace Drupal\gavias_sliderlayer\Controller;
  7. use Drupal\Core\Url;
  8. use Drupal\Core\Controller\ControllerBase;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Drupal\Core\Cache\Cache;
  11. class SliderController extends ControllerBase {
  12. public function gavias_sl_sliders_list($gid){
  13. if(!\Drupal::database()->schema()->tableExists('gavias_sliderlayers')){
  14. return "";
  15. }
  16. $header = array( 'ID', 'Name', 'Action');
  17. $results = \Drupal::database()->select('{gavias_sliderlayers}', 'd')
  18. ->fields('d', array('id', 'title'))
  19. ->condition('group_id', $gid, '=')
  20. ->execute();
  21. $rows = array();
  22. foreach ($results as $row) {
  23. $tmp = array();
  24. $tmp[] = $row->id;
  25. $tmp[] = $row->title;
  26. $tmp[] = t('<a href="@link_1">Edit Silder</a> | <a href="@link_2">Duplicate</a> | <a href="@link_3">Delete</a>', array(
  27. '@link_1' => Url::fromRoute('gavias_sl_sliders.admin.form', array('sid' => $row->id, 'gid' => $gid))->toString(),
  28. '@link_2' => Url::fromRoute('gavias_sl_sliders.admin.duplicate', array('id' => $row->id))->toString(),
  29. '@link_3' => Url::fromRoute('gavias_sl_group.admin.delete', array('sid' => $row->id, 'gid' => $gid, 'action' => 'slider'))->toString()
  30. ));
  31. $rows[] = $tmp;
  32. }
  33. return array(
  34. '#theme' => 'table',
  35. '#header' => $header,
  36. '#rows' => $rows,
  37. '#empty' => t('No Slider available. <a href="@link">Add Slider</a>.', array('@link' => Url::fromRoute('gavias_sl_sliders.admin.form', array('sid'=>0, 'gid'=>$gid))->toString())),
  38. );
  39. }
  40. public function gavias_sl_sliders_edit($gid=0, $sid=0) {
  41. global $base_url;
  42. $page['#attached']['library'][] = 'gavias_sliderlayer/gavias_sliderlayer.assets.admin';
  43. $theme_name = \Drupal::config('system.theme')->get('default');
  44. $group = getSliderGroup($gid);
  45. $group_settings = (isset($group->params) && $group->params) ? base64_decode($group->params):'null';
  46. $group_settings_decode = (isset($group->params) && $group->params) ? json_decode(base64_decode($group->params)):'null';
  47. $sliderlayers = gavias_sliderlayer_load($sid);
  48. $layers = (isset($sliderlayers->layers) && $sliderlayers->layers) ? ($sliderlayers->layers) : 'null';
  49. //print"<pre>";print_r($layers); die();
  50. $settings = (isset($sliderlayers->settings) && $sliderlayers->settings) ? ($sliderlayers->settings):'null';
  51. $abs_url_save = Url::fromRoute('gavias_sl_sliders.admin.save', array(), array('absolute' => FALSE))->toString();
  52. $abs_url_edit = Url::fromRoute('gavias_sl_sliders.admin.form', array('gid'=>$gid, 'sid'=>$sid), array('absolute' => FALSE))->toString();
  53. $abs_url_config = Url::fromRoute('gavias_sliderlayer.admin.get_images_upload', array(), array('absolute' => FALSE))->toString();
  54. $page['#attached']['drupalSettings']['gavias_sliderlayer']['get_images_upload_url'] = $abs_url_config;
  55. $page['#attached']['drupalSettings']['gavias_sliderlayer']['base_path'] = base_path();
  56. $page['#attached']['drupalSettings']['gavias_sliderlayer']['base_url'] = $base_url;
  57. $page['#attached']['drupalSettings']['gavias_sliderlayer']['save_url'] = $abs_url_save;
  58. $page['#attached']['drupalSettings']['gavias_sliderlayer']['edit_url'] = $abs_url_edit;
  59. $page['#attached']['drupalSettings']['gavias_sliderlayer']['group_settings'] = $group_settings_decode;
  60. $page['#attached']['drupalSettings']['gavias_sliderlayer']['layers_settings'] = $layers;
  61. $page['#attached']['drupalSettings']['gavias_sliderlayer']['settings'] = $settings;
  62. $deslider = array(
  63. 'title' => 'Slider',
  64. 'status' => '1',
  65. 'sort_index' => 1,
  66. 'background_image_uri' => '',
  67. 'background_image' => '',
  68. 'background_position' => 'center top',
  69. 'background_repeat' => 'no-repeat',
  70. 'background_fit' => 'cover',
  71. 'data_transition' => 'random',
  72. 'slide_easing_in' => 'Power0.easeIn',
  73. 'slide_easing_out' => 'Power1.easeOut',
  74. 'delay' => '1000',
  75. 'video_source' => '',
  76. 'youtube_video' => '',
  77. 'vimeo_video' => '',
  78. 'html5_mp4' => '',
  79. 'mp4_nextslideatend' => 'true',
  80. 'mp4_videoloop' => 'true',
  81. 'video_youtube_args' => '&loop=1&autoplay=1&playlist=',
  82. 'video_vimeo_args' => 'title=0&byline=0&portrait=0&api=1',
  83. 'video_start_at' => '',
  84. 'video_end_at' => '',
  85. 'parallax_scroll' => 'off',
  86. 'data_parallax' => '8',
  87. 'scalestart' => '0',
  88. 'scaleend' => '0'
  89. );
  90. $delayer = array(
  91. 'index' => 10,
  92. 'title' => '',
  93. 'type' => 'text',
  94. 'text' => 'Text Layer',
  95. 'image' => '',
  96. 'image_uri' => '',
  97. 'fid' =>'',
  98. 'top' => 0,
  99. 'left' => 0,
  100. 'data_time_start' => 500,
  101. 'data_time_end' => 50000,
  102. 'incomingclasses' => 'SlideMaskFromTop',
  103. 'outgoingclasses' => 'Fade-Out',
  104. 'data_speed' => 600,
  105. 'data_end' => 600,
  106. 'data_easing' => 'easeOutExpo',
  107. 'data_endeasing' => 'Power0.easeIn',
  108. 'removed' => 0,
  109. 'width' => 200,
  110. 'height' => 100,
  111. 'custom_css' => '',
  112. 'custom_style' => '',
  113. 'select_content_type' => 'text',
  114. 'font_size_lg' => '30',
  115. 'font_size_sm' => '30',
  116. 'font_size_xs' => '20',
  117. 'line_height_lg' => '38',
  118. 'line_height_sm' => '38',
  119. 'line_height_xs' => '28',
  120. 'text_align_lg' => 'left',
  121. 'text_align_sm' => 'left',
  122. 'text_align_xs' => 'left',
  123. );
  124. $page['#attached']['drupalSettings']['gavias_sliderlayer']['deslider'] = $deslider;
  125. $page['#attached']['drupalSettings']['gavias_sliderlayer']['delayer'] = $delayer;
  126. $style_fontend = drupal_get_path('theme', $theme_name) . '/css/sliderlayer.css';
  127. ob_start();
  128. include GAV_SLIDERLAYER_PATH . '/templates/backend/slider.php';
  129. $content = ob_get_clean();
  130. $page['admin-form'] = array(
  131. '#theme' => 'admin-form',
  132. '#content' => $content
  133. );
  134. return $page;
  135. }
  136. public function gavias_sliderlayer_save(){
  137. header('Content-type: application/json');
  138. $gid = $_REQUEST['gid'];
  139. $sid = $_REQUEST['sid'];
  140. $title = $_REQUEST['title'];
  141. $sort_index = $_REQUEST['sort_index'];
  142. $status = $_REQUEST['status'];
  143. $settings = $_REQUEST['settings'];
  144. $datalayers = $_REQUEST['datalayers'];
  145. $background_image_uri = $_REQUEST['background_image_uri'];
  146. if($sid > 0){
  147. $builder = \Drupal::database()->update("gavias_sliderlayers")
  148. ->fields(array(
  149. ' sort_index' => $sort_index,
  150. 'status' => $status,
  151. 'title' => $title,
  152. 'params' => $settings,
  153. 'layersparams' => $datalayers,
  154. 'background_image_uri' => $background_image_uri
  155. ))
  156. ->condition('id', $sid, '=')
  157. ->execute();
  158. $abs_url_edit = Url::fromRoute('gavias_sl_sliders.admin.form', array('gid'=>$gid, 'sid'=>$sid), array('absolute' => TRUE))->toString();
  159. $result = array(
  160. 'data' => 'insert saved',
  161. 'action' => 'edit',
  162. 'url_edit' => $abs_url_edit
  163. );
  164. }else{
  165. $sid = $builder = \Drupal::database()->insert("gavias_sliderlayers")
  166. ->fields(array(
  167. 'sort_index' => $sort_index,
  168. 'status' => $status,
  169. 'title' => $title,
  170. 'group_id' => $gid,
  171. 'params' => $settings,
  172. 'layersparams' => $datalayers,
  173. 'background_image_uri' => $background_image_uri
  174. ))
  175. ->execute();
  176. $abs_url_edit = Url::fromRoute('gavias_sl_sliders.admin.form', array('gid'=>$gid, 'sid'=>$sid), array('absolute' => TRUE))->toString();
  177. $result = array(
  178. 'data' => 'insert saved',
  179. 'sid' => $sid,
  180. 'gid' => $gid,
  181. 'action' => 'add',
  182. 'url_edit' => $abs_url_edit
  183. );
  184. \Drupal::messenger()->addMessage("SliderLayers has been created");
  185. }
  186. // Clear all cache
  187. \Drupal::service('plugin.manager.block')->clearCachedDefinitions();
  188. foreach (Cache::getBins() as $service_id => $cache_backend) {
  189. if($service_id == 'render' || $service_id == 'page'){
  190. $cache_backend->deleteAll();
  191. }
  192. }
  193. print json_encode($result);
  194. exit(0);
  195. }
  196. public function gavias_upload_file(){
  197. // A list of permitted file extensions
  198. global $base_url;
  199. $allowed = array('png', 'jpg', 'gif','zip');
  200. $_id = gavias_sliderlayer_makeid(6);
  201. $file_default_scheme = \Drupal::config('system.file')->get('default_scheme');
  202. if(isset($_FILES['upl']) && $_FILES['upl']['error'] == 0){
  203. $extension = pathinfo($_FILES['upl']['name'], PATHINFO_EXTENSION);
  204. if(!in_array(strtolower($extension), $allowed)){
  205. echo '{"status":"error extension"}';
  206. exit;
  207. }
  208. $path_folder = \Drupal::service('file_system')->realpath($file_default_scheme. "://gva-slider-upload");
  209. $file_path = $path_folder . '/' . $_id . '-' . $_FILES['upl']['name'];
  210. $file_url = str_replace($base_url, '',file_create_url($file_default_scheme. "://gva-slider-upload") . '/' . $_id .'-'. $_FILES['upl']['name']);
  211. if (!is_dir($path_folder)) {
  212. @mkdir($path_folder);
  213. }
  214. if(move_uploaded_file($_FILES['upl']['tmp_name'], $file_path)){
  215. $result = array(
  216. 'file_url' => $file_url,
  217. 'file_url_full' => $base_url . $file_url
  218. );
  219. print json_encode($result);
  220. exit;
  221. }
  222. }
  223. echo '{"status":"error"}';
  224. exit;
  225. }
  226. }