module_config.js 6.23 KB
Newer Older
Administrator committed
1
var param_template = $('#templates #param'),
2 3 4
    submit_btn = $('#templates .submit_button'),
    main_content = $('#main_content'),
    msettings = [];
Administrator committed
5 6

function save_module_settings() {
7 8
    var form_elts = $('.input-container'),
        data = {};
9

10
    form_elts.each(function(i, elt){
11
        console.log(elt)
12
        const label = $(elt).closest('.param').find('label'),
13 14
            key = label.attr('for');

15
        if (key.length > 0 && key != 'iname') {
16 17 18
            let value = "";
            data[key] = msettings[key];

19
            if ($(elt).hasClass('ql-container')) {
20

21 22
                value = $(elt).find('.ql-editor').html().replace('<p><br></p>','')
            } else {
23

24 25
                value = $(elt).find('input').val();
            }
26
            data[key].value = value;
27 28 29 30 31
        }
        
        
    });
    
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
    post_form(
        'settings', {params: JSON.stringify(data)},
        function(err, result) {
            if (!err) {
                var succeeded = false;

                try {
                    if (result.res.save == true) {
                        display_msg_box('Enregistrement réussi !');
                        succeeded = true;
                    }
                } catch (e) {
                    console.log(e);
                }
                if (succeeded == false) display_msg_box('L\'enregistrement a échoué !', 'error');
            } else {
                console.log(err);
            }
        }
    );

53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
}
function quillify(params) {
    let quill = new Quill(params.id, {
                          modules: {
                            toolbar: [
                              [{ header: [1, 2, false] }],
                              ['bold', 'italic', 'underline'],
                              [{ 'size': ['small', false, 'large', 'huge'] }],
                              [{ 'color': [] }, { 'background': [] }],
                            ]
                          },
                          placeholder: '',
                          theme: 'snow'
                        });
    quill.root.innerHTML = params.content;

Administrator committed
69
}
70 71 72 73
function get_sorted_keys(obj) {
    var keys = Object.keys(obj);
    return keys.sort(function(a,b){return obj[a].sort_order-obj[b].sort_order});
}
Administrator committed
74 75
function get_module_settings() {
    $.ajax('settings')
76 77 78
        .done(function(rData) {
            try {
                if (typeof rData.res.settings != "undefined") {
79
                    msettings = rData.res.settings;
80 81
                    var added_elts = [],
                        quill_containers = [];
82

83
                    get_sorted_keys(msettings).forEach(function(key){
84
                        var param = $(param_template.clone().html());
85
                        // param html include textarea and input : one of them will be removed
86
                        var input = null;
87
                        let data = msettings[key];
88
                            
89
                        // Fill the label content
90
                        param.find('label').text(data.title)
91
                                           .attr('for', key)
92 93
                        if (data.type == 'textarea') {
                            param.find('input').remove();
94 95 96 97 98
                            // create an accordean button with label content as "text"
                            let accordeon_btn = $('<button>').attr('type', 'button')
                                                             .addClass('accordion')
                                                             .html(param.find('label').remove())
                            param.prepend(accordeon_btn);
99 100
                            input = param.find('textarea');
                            input.attr('name', key).text(data.value);
101 102 103 104 105 106 107 108
                            // create a div wrapper and put textarea in it
                            let content_div = $('<div>').attr('id', 'quill-' + key)
                                                        .css('height', '375px')
                                                        .html(input.remove())
                            param.find('.input-container').addClass('panel')
                                                          .addClass('ql-container')
                                                          .append(content_div);

109 110 111 112 113 114 115 116

                            quill_containers.push(
                                                    {
                                                     id: '#quill-' + key, 
                                                     content: data.value
                                                    }
                                                 )
                            
117 118 119 120
                        } else {
                            param.find('textarea').remove();
                            input = param.find('input');
                            input.attr('name', key).attr('value', data.value);
121
                            if (typeof data.class != "undefined") input.addClass(data.class);
122 123 124
                        }

                        /*
Administrator committed
125 126 127 128
                    console.log(key)
                    console.log(data)
                    console.log(param)
                    */
129
                        param.appendTo(main_content);
130 131
                       
                        
132
                        added_elts.push(key);
133
                    })
134
                    if (added_elts.length > 0) {
135
                        submit_btn.prependTo(main_content);
136 137
                    }
                    submit_btn.click(save_module_settings);
138 139 140 141 142 143
                    quill_containers.forEach(function(params){
                        quillify(params);
                    });
                    // setTimeout(function() {
                            
                    // }, 5000);
Administrator committed
144
                }
145 146
            } catch (e) {
                console.log(e);
Administrator committed
147
            }
148 149

        });
Administrator committed
150 151
}

152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
get_module_settings();

$(document).on('click', '.accordion', function(){
    /* Toggle between adding and removing the "active" class,
    to highlight the button that controls the panel */
    this.classList.toggle("active");

    /* Toggle between hiding and showing the active panel */
    var panel = this.nextElementSibling;
    if (panel.style.display === "block") {
      panel.style.display = "none";
    } else {
      panel.style.display = "block";
    }
});