PageSourceSearch

https://levieuxchateau.be/wp-content/plugins/plugin-grafoman-wordp…/js/ajax-modalbox.js?ver=1790421692

js levieuxchateau.be collected 2026-09-26 11:22:05 UTC 13,187 bytes, 377 lines download raw bytes

1
2jQuery(function($) {
3  jQuery(document).ready( function() {
4
5    console.log('ajax-modalbox.js loaded');
6
7    $('.showfrontendeditor').on('click', function(){
8      $('body').toggleClass('frontendeditor');
9    });
10
11    // - Margins
12
13    $('.openmarginsettings').on('click', function(){
14      console.log('open or close margins');
15      let wrapper = $(this).parents('.dialogwrap');
16      wrapper.find('.marginpaddingdsettings').toggleClass('d-none');
17      wrapper.find('.marginpaddingdsettings').empty();
18      let div_margins = document.createElement('div');
19      let div_paddings = document.createElement('div');
20      div_margins.className = "margins";
21      div_paddings.className = "paddings";
22      wrapper.find('.marginpaddingdsettings').append(div_margins);
23      wrapper.find('.marginpaddingdsettings').append(div_paddings);
24      loadBlokMargins(wrapper);
25    });
26
27    function loadBlokMargins(wrapper, loadDefaultValues=false) {
28      console.log('loadBlokMargins: '+loadDefaultValues);
29      let jsonobj = wrapper.data('cssjson');
30      jsonobj = wrapper[0].dataset.cssjson;
31      
32      if(jsonobj){
33        let jsonparse = JSON.parse(jsonobj);
34        
35        // Load default if not set or if loadDefaultValues is set to true
36        if(Object.keys(jsonparse.margins).length == 0 || loadDefaultValues == true){
37          console.log('json margin data is empty or set to default, load default');
38          jsonparse.margins = getDefaults(wrapper.data('layout')).initmargins;
39        }
40        
41        if(Object.keys(jsonparse.paddings).length == 0 || loadDefaultValues == true){
42          console.log('json padding data is empty or set to default, load default');
43          jsonparse.paddings = getDefaults(wrapper.data('layout')).initpaddings;
44        }
45
46        for (var property in jsonparse.margins) {
47          var label = document.createElement("label");
48          label.textContent = property + ":";
49
50          var input = document.createElement("input");
51          input.type = "number";
52          input.name = property;
53          input.min = "-25";
54          input.max = "100";
55          input.value = jsonparse.margins[property];
56          input.onchange = function () {
57            updateJsonSpacing(wrapper);
58            updateClasses(wrapper);
59          };
60          wrapper.find('.marginpaddingdsettings .margins').append(label);
61          wrapper.find('.marginpaddingdsettings .margins').append(input);
62        }
63
64        for (var property in jsonparse.paddings) {
65          var label = document.createElement("label");
66          label.textContent = property + ":";
67
68          var input = document.createElement("input");
69          input.type = "number";
70          input.name = property;
71          input.min = "-25";
72          input.max = "100";
73          input.value = jsonparse.paddings[property];
74          input.onchange = function () {
75            updateJsonSpacing(wrapper);
76            updateClasses(wrapper);
77          };
78          wrapper.find('.marginpaddingdsettings .paddings').append(label);
79          wrapper.find('.marginpaddingdsettings .paddings').append(input);
80        }
81
82        var savespacing = document.createElement("button");
83        savespacing.name = "savespacing";
84        savespacing.innerText = "Save";
85        savespacing.onclick = function () {
86          saveDataAttrToDB(wrapper);
87        }
88
89        var resetspacing = document.createElement("button");
90        resetspacing.name = "resetspacing";
91        resetspacing.innerText = "Reset";
92        resetspacing.onclick = function () {
93          resetSpacingToDefault(wrapper);
94        }
95
96        wrapper.find('.marginpaddingdsettings').append(savespacing);
97        wrapper.find('.marginpaddingdsettings').append(resetspacing);
98
99      }
100    }
101
102    function getDefaults(layout){
103      let jsoninit = document.querySelector('div.jsoninit').dataset.jsoninit;
104      jsoninit = JSON.parse(jsoninit);
105
106      if(!jsoninit[layout]){
107        layout = 'default';
108      }
109      return jsoninit[layout];
110    }
111
112    function resetSpacingToDefault(wrapper){
113      console.log('resetSpacingToDefault');
114      wrapper.find('.marginpaddingdsettings').empty();
115      let div_margins = document.createElement('div');
116      let div_paddings = document.createElement('div');
117      div_margins.className = "margins";
118      div_paddings.className = "paddings";
119      wrapper.find('.marginpaddingdsettings').append(div_margins);
120      wrapper.find('.marginpaddingdsettings').append(div_paddings);
121      loadBlokMargins(wrapper, true);
122      updateJsonSpacing(wrapper);
123      updateClasses(wrapper);
124    }
125    
126
127    function saveDataAttrToDB(wrapper){
128      console.log('click savespacing');
129      wrapper.find('.marginpaddingdsettings').addClass('d-none');
130      wrapper.find('.classlistsettings').addClass('d-none');
131      let jsonobj = JSON.parse(wrapper[0].dataset.cssjson);
132      let newCssMargins = jsonobj.margins;
133      let newCssPaddings = jsonobj.paddings;
134      let defaultMargins = getDefaults(wrapper[0].dataset.layout);
135      let defaultPaddings = getDefaults(wrapper[0].dataset.layout);
136      
137      // Compare the new margins value with the init value and check if new value is not empty
138      if( (newCssMargins.length == 0) || (JSON.stringify(newCssMargins) == JSON.stringify(defaultMargins))){
139        console.log('empty newCssMargins');
140        newCssMargins = [];
141        jsonobj.margins = newCssMargins;
142      }
143
144      // Compare the new paddings value with the init value and check if new value is not empty
145      if( (newCssPaddings.length == 0) || (JSON.stringify(newCssPaddings) == JSON.stringify(defaultPaddings))){
146        console.log('empty newCssPaddings');
147        defaultPaddings = [];
148        jsonobj.paddings = defaultPaddings;
149      }
150      
151      // Save to data attr
152      wrapper[0].dataset.cssjson = JSON.stringify(jsonobj);
153
154      // Save to acf subfield with ajax
155      let the_id = wrapper[0].dataset.the_id;
156      let the_name = wrapper[0].dataset.the_name;
157      let css_json = wrapper[0].dataset.cssjson;
158      let layout = wrapper[0].dataset.layout;
159
160      showToast('Bezig met opslaan...', 'success');
161
162      $.ajax({
163        type: "POST",
164        url: grf_script_vars.ajax_url,
165        data: {
166          action:'set_data',
167          the_id: the_id,
168          the_name: the_name,
169          layout: layout,
170          setval: css_json
171        },
172        success: function(response){
173          let arrResponse = response.split('|');
174          console.log(arrResponse);
175          wrapper.removeClass('notsaved');
176          showToast('Instellingen zijn opgeslagen', 'success');
177        }
178      });
179    }
180
181
182
183
184
185    // - Classes
186
187    $('.openclasslistsettings').on('click', function(){
188      console.log('open or close classes');
189      let wrapper = $(this).parents('.dialogwrap');
190      wrapper.find('.classlistsettings').toggleClass('d-none');
191      wrapper.find('.classlistsettings').empty();
192      loadBlokClasses(wrapper);
193    });
194
195    function loadBlokClasses(wrapper) {
196      let jsonobj = wrapper[0].dataset.cssjson;
197      
198      if(jsonobj){
199        let jsonparse = JSON.parse(jsonobj);
200        let classlist = getDefaultClasslist(wrapper[0].dataset.layout);
201        // console.log(classlist);
202        // console.log(jsonparse.classnames);
203
204        for (var property in classlist) {
205          var label = document.createElement("label");
206          label.textContent = classlist[property];
207
208          var input = document.createElement("input");
209          input.type = "checkbox";
210          input.name = classlist[property];
211          if(jsonparse.classnames.includes(classlist[property])){
212            input.checked = true;
213          }
214          
215          input.onchange = function () {
216            if(this.checked){
217              jsonparse.classnames.push(this.name);
218            }else{
219              for (let i = 0; i < jsonparse.classnames.length; i++) { 
220                if (jsonparse.classnames[i] === this.name) { 
221                  let spliced = jsonparse.classnames.splice(i, 1); 
222                } 
223              }
224            }
225            wrapper[0].dataset.cssjson = JSON.stringify(jsonparse);
226            updateJsonSpacing(wrapper);
227            updateClasses(wrapper);
228          };
229          label.prepend(input);
230          wrapper.find('.classlistsettings').append(label);
231        }
232
233        var saveClasses = document.createElement("button");
234        saveClasses.name = "saveclasses";
235        saveClasses.innerText = "Save";
236        saveClasses.onclick = function () {
237          saveDataAttrToDB(wrapper);
238        }
239
240        var resetClasses = document.createElement("button");
241        resetClasses.name = "resetlasses";
242        resetClasses.innerText = "Reset";
243        resetClasses.onclick = function () {
244          console.log('resetlasses');
245          resetClassesToDefault(wrapper);
246        }
247
248        wrapper.find('.classlistsettings').append(saveClasses);
249        wrapper.find('.classlistsettings').append(resetClasses);
250
251      }
252    }
253
254    function getDefaultClasslist(layout){
255      let jsoninit = document.querySelector('div.jsoninit').dataset.jsoninit;
256      jsoninit = JSON.parse(jsoninit);
257
258      if(!jsoninit[layout]){
259        layout = 'default';
260      }
261      return jsoninit[layout].classlist;
262    }
263
264    function resetClassesToDefault(wrapper){
265      console.log('resetClassesToDefault');
266      let event = new Event('change');
267      let checkboxes = wrapper[0].querySelectorAll('input');
268      for (let i = 0; i < checkboxes.length; i++) { 
269        checkboxes[i].checked = false;
270        checkboxes[i].dispatchEvent(event);
271      }
272    }
273
274
275    // - Update classes
276    function updateJsonSpacing(wrapper){
277      console.log('updateJsonSpacing');
278      let jsonobj = wrapper[0].dataset.cssjson;
279      let jsonparse = JSON.parse(jsonobj);
280
281      if(Object.keys(jsonparse.margins).length == 0){
282        console.log('updateJsonSpacing | json margin data is empty or set to default, load default');
283        jsonparse.margins = getDefaults(wrapper.data('layout')).initmargins;
284      }
285
286      if(Object.keys(jsonparse.paddings).length == 0){
287        console.log('updateJsonSpacing | json padding data is empty or set to default, load default');
288        jsonparse.paddings = getDefaults(wrapper.data('layout')).initpaddings;
289      }
290      
291      let margins = wrapper[0].querySelectorAll('.marginpaddingdsettings .margins input');
292      let paddings = wrapper[0].querySelectorAll('.marginpaddingdsettings .paddings input');
293
294      for (var i = 0; i < margins.length; i++) {
295        //console.log(margins[i].name +'-'+margins[i].value);
296
297        if (!isNaN(margins[i].value) && margins[i].value >= -25 && margins[i].value <= 100) {
298          jsonparse.margins[margins[i].name] = parseInt(margins[i].value);
299          wrapper[0].dataset.cssjson = JSON.stringify(jsonparse);
300        } else {
301          console.log("Ongeldige waarde. Voer een getal in tussen -25 en 100.");
302        }
303      }
304
305      for (var i = 0; i < paddings.length; i++) {
306        //console.log(paddings[i].name +'-'+paddings[i].value);
307
308        if (!isNaN(paddings[i].value) && paddings[i].value >= -25 && paddings[i].value <= 100) {
309          jsonparse.paddings[paddings[i].name] = parseInt(paddings[i].value);
310          wrapper[0].dataset.cssjson = JSON.stringify(jsonparse);
311        } else {
312          console.log("Ongeldige waarde. Voer een getal in tussen -25 en 100.");
313        }
314      }
315      
316    }
317
318    // - Update classes
319    function updateClasses(wrapper){
320      console.log('updateClasses');
321      let arrClasses = [];
322      let jsonobj = wrapper[0].dataset.cssjson;
323      let layout = wrapper[0].dataset.layout;
324      let xtraClasses = wrapper[0].dataset.xtraclasses;
325      if(layout == 'text'){layout="textonly";}
326      arrClasses.push('section');
327      arrClasses.push(layout);
328      arrClasses.push(xtraClasses);
329
330      if(jsonobj){
331        let jsonparse = JSON.parse(jsonobj);
332        console.log(jsonparse);
333        for (var property in jsonparse.margins){
334          arrClasses.push(property+'-'+jsonparse.margins[property]);
335        }
336        for (var property in jsonparse.paddings){
337          arrClasses.push(property+'-'+jsonparse.paddings[property]);
338        }
339        for (var property in jsonparse.classnames){
340          arrClasses.push(jsonparse.classnames[property]);
341        }
342      }
343      let newClasses = arrClasses.join(' ');
344      console.log(newClasses);
345      wrapper[0].querySelector('.section').classList = newClasses;
346    }
347  })
348
349
350  
351  
352  function showToast(message, classname){
353    // get the toast container
354    var toaster = document.getElementById('liveToast');       
355    toaster.classList.remove('success', 'error');
356    toaster.classList.add(classname);
357    toaster.querySelector('.toast-title').innerHTML = 'Grafoman';       
358    toaster.querySelector('.toast-body').innerHTML = message;
359
360
361    try {
362      var visibleToast = new understrap.Toast(toaster, {'autohide': true, 'delay': 3500});
363      visibleToast.show();
364    } catch (error) {
365      console.error(error);
366      console.log(message);
367    }
368
369
370    
371  }
372
373  $( function() {
374    $( ".marginpaddingdsettings, .classlistsettings" ).draggable();
375  } );
376
377});

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.