RowsListControl.php (5167B)
1 <?php 2 3 namespace Materialis\Customizer\Controls; 4 5 class RowsListControl extends \Materialis\Customizer\BaseControl 6 { 7 8 public function init() 9 { 10 $this->cpData['insertText'] = isset($this->cpData['insertText']) ? $this->cpData['insertText'] : 'Click to insert'; 11 $this->cpData['insertText'] = __($this->cpData['insertText'], 'cloudpress-companion'); 12 $this->cpData['type'] = isset($this->cpData['type']) ? $this->cpData['type'] : "mod_changer"; 13 } 14 15 public function enqueue() 16 { 17 $jsUrl = $this->companion()->assetsRootURL() . "/js/customizer"; 18 wp_enqueue_script('companion-row-list-control', $jsUrl . "/row-list-control.js"); 19 } 20 21 public function getSettingAttr($setting_key = 'default') 22 { 23 if ( ! isset($this->settings[$setting_key])) { 24 return ''; 25 } 26 27 echo 'data-setting-link="' . esc_attr($this->settings[$setting_key]->id) . '"'; 28 } 29 30 public function dataAttrs() 31 { 32 $data = 'data-name="' . $this->id . '"'; 33 34 echo $data; 35 } 36 37 public function dateSelection() 38 { 39 $data = 'data-selection="radio"'; 40 41 if (isset($this->cpData['selection'])) { 42 $data = 'data-selection="' . $this->cpData['selection'] . '"'; 43 } 44 45 echo $data; 46 } 47 48 49 public function render_content() 50 { 51 ?> 52 <div <?php $this->dateSelection(); ?> data-type="row-list-control" data-apply="<?php echo $this->cpData['type'] ?>" class="list-holder"> 53 <?php ($this->cpData['type'] === "mod_changer") ? $this->renderModChanger() : $this->renderPresetsChanger() ?> 54 </div> 55 <?php 56 } 57 58 public function renderModChanger() 59 { 60 $items = $this->getSourceData(); 61 $version = $this->companion()->version; 62 ?> 63 64 <ul <?php $this->dataAttrs(); ?> class="list rows-list"> 65 <?php foreach ($items as $item): ?> 66 67 <?php $used = ($item['id'] === $this->value()) ? "already-in-page" : ""; ?> 68 69 <li class="item available-item <?php echo $used; ?>" data-id="<?php echo $item['id']; ?>"> 70 <div class="image-holder" style="background-position:center center;"> 71 <img data-src="<?php echo $item['thumb']; ?>?v=<?php echo $version; ?>" src=""/> 72 </div> 73 74 <span data-id="<?php echo $item['id']; ?>" class="available-item-hover-button" <?php $this->getSettingAttr(); ?> ><?php echo $this->cpData['insertText']; ?></span> 75 <div title="Section is already in page" class="checked-icon"></div> 76 <div title="Pro Only" class="pro-icon"></div> 77 <span class="item-preview" data-preview="<?php echo $item['preview']; ?>"> 78 <i class="icon"></i> 79 </span> 80 81 <?php if (isset($item['description'])): ?> 82 <span class="description"> <?php echo $item['description']; ?> </span> 83 <?php endif; ?> 84 </li> 85 <?php endforeach; ?> 86 </ul> 87 <input type="hidden" value="<?php echo esc_attr($this->value()); ?>" <?php $this->link(); ?> /> 88 89 <?php ; 90 } 91 92 93 public function renderPresetsChanger() 94 { 95 $items = $this->getSourceData(); 96 $optionsVar = uniqid('cp_' . $this->id . '_'); ?> 97 <script> 98 var <?php echo $optionsVar ?> = 99 { 100 } 101 ; 102 </script> 103 <ul <?php $this->dataAttrs(); ?> class="list rows-list"> 104 <?php foreach ($items as $item): ?> 105 <script> 106 <?php $settingsData = \Materialis\Customizer\BaseSetting::filterArrayDefaults($item['settings']); ?> 107 <?php echo $optionsVar ?>["<?php echo $item['id']; ?>"] = <?php echo json_encode($settingsData) ?>; 108 </script> 109 110 <li class="item available-item" data-varname="<?php echo $optionsVar ?>" data-id="<?php echo $item['id']; ?>"> 111 <div class="image-holder" 112 style="background-position:center center;"> 113 <img src="<?php echo $item['thumb']; ?>"/> 114 </div> 115 116 <span data-id="<?php echo $item['id']; ?>" class="available-item-hover-button" <?php $this->getSettingAttr(); ?> ><?php echo $this->cpData['insertText']; ?></span> 117 <div title="Section is already in page" class="checked-icon"></div> 118 <span class="item-preview" data-preview="<?php echo $item['preview']; ?>"> 119 <i class="icon"></i> 120 </span> 121 <?php if (isset($item['description'])): ?> 122 <span class="description"> <?php echo $item['description']; ?> </span> 123 <?php endif; ?> 124 </li> 125 <?php endforeach; ?> 126 </ul> 127 <input type="hidden" value="<?php echo esc_attr($this->value()); ?>" <?php $this->link(); ?> /> 128 129 <?php ; 130 } 131 }