1(function($){ 2 "use strict"; 3 var initPalettes = function(){ 4 // Show edit popup with current palettes 5 var $plmodal = $('.t4-palettes-modal'); 6 if (!$plmodal.parent().is('.themeConfigModal')) $plmodal.appendTo($('.themeConfigModal')); 7 var $plEdit = $('.pattern.active'),$data = $plEdit.data(),$data_color = {}; 8 $plmodal.find('.config_pattern').find('.t4-pattern').each(function(){ 9 $(this).parents('.controls').find('li').removeClass('active'); 10 var data = $(this).data(); 11 var attrName = $(this).data('attrname'), $value = ""; 12 if(attrName != 'title'){ 13 $data_color[attrName] = $data[attrName]; 14 $value = $data[attrName]; 15 if(!$value) $value = "#FFF"; 16 $(this).val($value); 17 $(this).spectrum("set",$value); 18 } 19 if(attrName == 'title') $(this).val($data[attrName]); 20 $(this).data('val',$data[attrName]); 21 }); 22 if(typeof $data_color == 'object'){ 23 Object.keys($data_color).forEach( function(cls, index) { 24 initPalettePreview(cls,$data_color); 25 }); 26 } 27 $('.error-name-exist').hide(); 28 $('.error-title-null').hide(); 29 // modal show 30 $plmodal.show(); 31 } 32 var generatedPalettes = function(trigger){ 33 var colorPattern = {},$pattern; 34 if(trigger){
35 $pattern = '.pattern'; 36 }else{ 37 $pattern = '.pattern.active'; 38 } 39 $('.group_palette').find($pattern).not('.pattern-clone').each(function(index){ 40 var dataColorPt = $(this).data(); 41 colorPattern[dataColorPt.class] = dataColorPt; 42 }); 43 return colorPattern; 44 } 45 var validationData = function() { 46 var allPalette = generatedPalettes(true); 47 48 var $return = true; 49 if(!$('.t4-pattern.title').val()){ 50 $('.error-title-null').show(); 51 $return = false; 52 }else{ 53 $('.error-title-null').hide(); 54 var title = $('.t4-pattern.title').val(); 55 var $cls = title.replace(/\s+/g,"_").toLowerCase(); 56 Object.keys(allPalette).forEach(function(cls, idx){ 57 if (cls == $cls || allPalette[cls]['title'] == title) { 58 $('.error-name-exist').show(); 59 $return = false; 60 } 61 }); 62 } 63 return $return; 64 } 65 var updateToJson = function(trigger){ 66 var AllData = generatedPalettes(true); 67 $('#typelist_theme_styles_palettes').val(JSON.stringify(AllData)); 68 $('#typelist_theme_styles_palettes').trigger('change'); 69 if(trigger){
70 doSave(); 71 } 72 } 73 var doSave = function(trigger){ 74 var dataSave = generatedPalettes(trigger); 75 var url = location.pathname + '?option=com_ajax&plugin=t4&format=json&t4do=Palettes&id=' + tempId; 76 $.post(url, {task: 'save',all:trigger,value: dataSave}).then(function(response) { 77 if (response.ok) { 78 T4Admin.Messages(T4Admin.langs.palettesUpdated,'message'); 79 } else { 80 T4Admin.Messages(response.error,'error'); 81 } 82 }); 83 } 84 85 var initPalettePreview = function(name,data){ 86 if(name == 'background_color'){ 87 $('.pattern-preview').css({background:data.background_color}); 88 }else{ 89 $('.pattern-preview .'+name).data(name,data[name]); 90 $('.pattern-preview .'+name).css({color:data[name]}); 91 if(name.match(/_hover/)){ 92 $('.pattern-preview .'+name.replace(/_hover/,"")).data(name,data[name]); 93 $('.pattern-preview .'+name.replace(/_hover/,"")).hover(function(){ 94 var colorArr = $(this).data(); 95 $(this).css("color", colorArr[name]); 96 }, function(){ 97 var colorArr = $(this).data(); 98 $(this).css("color", colorArr[name.replace(/_hover/,"")]); 99 }); 100 } 101 102 } 103 } 104 var doRemove = function(el){ 105 var $message = 'colorPalettes'+$(el).data('tooltip'), action = $(el).data('action'), plEl = $(el).closest('.pattern'),plName = plEl.data('class'),plDel = $(el).parents('li'); 106 var url = location.pathname + '?option=com_ajax&plugin=t4&format=json&t4do=Palettes&id=' + tempId; 107 $.post(url, {task: 'remove',name: plName}).then(function(response) { 108 if (response.ok) { 109 var resData = response.data; 110 var resDataColor = response.datacolor; 111 if(action == 'remove'){ 112 plEl.remove(); 113 }else{ 114 console.log(plEl) 115 var plObj = plEl.find('li'); 116 plObj.each(function(){ 117 var elClass = $(this).find('span').attr('class'); 118 if(elClass){ 119 plEl.data(elClass,resDataColor[elClass]); 120 if(!resDataColor[elClass]) resDataColor[elClass] = ''; 121 $(this).find('span').css({'background':resDataColor[elClass]}) 122 } 123 }); 124 plDel.addClass('hidden'); 125 } 126 updateToJson(); 127 T4Admin.Messages(T4Admin.langs[$message],'message'); 128 } else { 129 T4Admin.Messages(response.error,'error'); 130 } 131 }) 132 } 133 $(document).ready(function() { 134 135 var createPalette = function(data){ 136 let clone = data.clone(); 137 let dataColor = data.data(); 138 clone.removeClass('pattern-clone'); 139 clone.removeClass('hidden'); 140 $('.t4-palettes-modal').find('.config_pattern').find('input.t4-pattern').each(function(){ 141 // var $data = $(this).data(), $attrName = $data.attrname,$val = $(this).val(),$dataColor = ''; 142 var name = $(this).data('attrname'),val = $(this).val(); 143 if(name == 'title'){ 144 if(clone.data('class') == ''){ 145 var $classes = val.replace(/\s+/g,"_").toLowerCase(); 146 clone.data('class',$classes); 147 } 148 clone.find('.pattern-title').text(val); 149 }else{ 150 clone.find('span.'+name).css({background:val}); 151 } 152 clone.data(name,val); 153 }); 154 clone.appendTo($('.pattern-list'));
155 //update status action 156 var action_del = clone.find('.pt-color-del'); 157 if(action_del.is(":hidden")){ 158 action_del.parents('li').removeClass('hidden'); 159 } 160 } 161 $(document).on('click','.pt-color-edit', function(e) { 162 e.preventDefault(); 163 var paletteEdit = $(this).closest('.pattern'); 164 $('.pattern.active').removeClass('active'); 165 paletteEdit.addClass('active'); 166 $('.t4-palettes-modal').data('action','edit'); 167 initPalettes(); 168 }); 169 $(document).on('change','.t4-pattern', function(e) { 170 var $data = $(this).data(),attrName = $data.attrname,$val = $data.val,$color = $(this).val(); 171 var data_color = {} 172 data_color[attrName] = $color; 173 initPalettePreview(attrName,data_color); 174 }); 175 176 $(document).on('click','.pt-color-create', function(e) { 177 178 e.preventDefault(); 179 var palettes = $('.pattern-list.t4-theme-palettes'); 180 //init user color to chose color 181 var $parentColor = $(this).parents('.add-more-palettes').find('.pattern').clone(true); 182 //update status action 183 var action_del = $parentColor.find('.pt-color-del'); 184 if(action_del.is(":hidden")){ 185 action_del.parents('li').removeClass('hidden'); 186 } 187 action_del.parents('li').html('<a class="pt-color-del" href="#" data-tooltip="Delete" data-action="remove"><i class="fal fa-trash-alt fa-fw"></i></a>'); 188 $('.pattern.active').removeClass('active'); 189 $parentColor.addClass('hidden active clone'); 190 $parentColor.data('class',''); 191 $parentColor.appendTo(palettes); 192 $('.t4-palettes-modal').data('action','create'); 193 initPalettes(); 194 195 }); 196 $(document).on('click','.pt-color-clone', function(e) { 197 e.preventDefault(); 198 var $parentColor = $(this).closest('.pattern'), $patternClone = $parentColor.clone(true), $data = $patternClone.data(); 199 var $val = $(this).val(), $name_palette = []; 200 $('.pattern-list').find('.pattern').each(function(){ 201 $name_palette.push($(this).data('title')); 202 }); 203 $patternClone.removeClass($data.class); 204 var random = '', newTitle = '', title = $data.title; 205 for (var i = 0; i < 100; i++) { 206 random = ' copy '+i; 207 if(i==0) random = ' copy'; 208 newTitle = title + random; 209 if($name_palette.indexOf(newTitle) == -1){ 210 break; 211 } 212 } 213 $patternClone.addClass($data.class+random.replace(/\s/g,'_')); 214 $patternClone.addClass('clone'); 215 $patternClone.data('class',''); 216 $patternClone.data('status','loc'); 217 $patternClone.find('.pattern-title').text(newTitle); 218 $patternClone.data('title',newTitle); 219 //update status action 220 var action_del = $patternClone.find('.pt-color-del'); 221 if(action_del.is(":hidden")){ 222 action_del.parents('li').removeClass('hidden'); 223 } 224 action_del.parents('li').html('<a class="pt-color-del" href="#" data-tooltip="Delete" data-action="remove"><i class="fal fa-trash-alt fa-fw"></i></a>'); 225 $patternClone.insertAfter($parentColor); 226 $patternClone.find('.pt-color-edit').trigger('click'); 227 $('.t4-palettes-modal').data('action','clone'); 228 }); 229 $('body').on('click','.t4-patterns-apply', function(e) { 230 e.preventDefault(); 231 var $plmodal = $('.t4-palettes-modal'); 232 233 if(!validationData() && $plmodal.data('action') == 'create'){ 234 return false; 235 } 236 var savetofile = false; 237 var patternActive = $('.pattern.active'); 238 if(patternActive.hasClass('clone')){ 239 patternActive.removeClass('clone'); 240 savetofile = true; 241 } 242 console.log($plmodal.data('action')) 243 if(patternActive.hasClass('hidden')){ 244 patternActive.removeClass('hidden'); 245 patternActive.removeClass('pattern-clone'); 246 } 247 var status = patternActive.data('status'); 248 if(['ovr','org'].indexOf(status) > -1){ 249 patternActive.data('status','ovr'); 250 } 251 $plmodal.find('.config_pattern').find('input.t4-pattern').each(function(){ 252 // var $data = $(this).data(), $attrName = $data.attrname,$val = $(this).val(),$dataColor = ''; 253 var name = $(this).data('attrname'), val = $(this).val(); 254 255 if(name == 'title'){ 256 if(patternActive.data('class') == ''){ 257 var $classes = val.replace(/\s+/g,"_").toLowerCase(); 258 patternActive.data('class',$classes); 259 } 260 patternActive.find('.pattern-title').text(val); 261 }else{ 262 patternActive.find('span.'+name).css({background:val}); 263 } 264 patternActive.data(name,val); 265 }); 266 267 $(this).closest('.t4-palettes-modal').hide(); 268 updateToJson(savetofile); 269 });
270 $('body').on('click','.t4-patterns-cancel, .action-t4-modal-close', function(e) { 271 $(this).closest('.t4-palettes-modal').hide(); 272 var $pattern = $('.pattern.active'),dataClass = $pattern.data('class'); 273 $('.t4-palettes-modal').data('action',''); 274 if($pattern.hasClass('clone')){ 275 $pattern.remove(); 276 $(document).find('.pattern[data-class="'+dataClass+'"]').addClass('active'); 277 } 278 }); 279 $('body').on('click','.pt-color-del', function(e) { 280 e.stopPropagation(); 281 e.preventDefault(); 282 var that = this; 283 var $langs = 'colorPalettesConfirm'+$(this).data('tooltip'); 284 T4Admin.Confirm(T4Admin.langs[$langs],function(ans){ 285 if (ans) { 286 doRemove(that); 287 }else { 288 return false; 289 } 290 },''); 291 }); 292 293 // dont trigger action when click on action group 294 $(document).on('click','.pattern-actions-list', function(e) { 295 e.stopPropagation(); 296 }); 297 }); 298 299})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.