Обновление шаблонов от 12.05.2019 - использование HTTPS вместо HTTP
Теперь Code4august использует защищённое соединение. Чтобы его использовать, замените http:// на https:// в адресах скриптов.
Шаблон "Клиент->HTML-Шаблоны 1->Отправка":
Найдите:
%C4AROOT = "http://code4august.ru"%
Замените на:
%C4AROOT = "https://code4august.ru"%
Шаблон "Клиент->Страницы->Страница X":
Если вы забыли номер страницы X, узнать его можно в разделе "Клиент->Виртуальные каталоги".
Найдите:
%C4AROOT = "http://code4august.ru"%
Замените на:
%C4AROOT = "https://code4august.ru"%
Обновление шаблонов от 5.04.2019 - сервис "Редактор кнопок"
Добавлена возможность использовать юникод (в том числе и эмодзи) в именах кнопок. Для включения этой возможности обновите шаблоны.
Шаблон "Клиент->Страницы->Страница X":
Если вы забыли номер страницы X, узнать его можно в разделе "Клиент->Виртуальные каталоги".
Найдите:
function base64x(s){
var trans = [];
var trans2 = [0x402,0x403,0x201A,0x453,0x201E,0x2026,0x2020,0x2021, 0x20AC,0x2030,0x409,0x2039,0x40A,0x40C,0x40B,0x40F, 0x452,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014, 0,0x2122,0x459,0x203A,0x45A,0x45C,0x45B,0x45F, 0,0x40E,0x45E,0x408,0,0x490,0,0, 0x401,0,0x404,0,0,0,0,0x407, 0,0,0x406,0x456,0x491,0,0,0, 0x451,0x2116,0x454,0,0x458,0x405,0x455,0x457];
var inp = "";
var output = "";
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._";
for(var i = 0x410; i <= 0x44F; i++) trans[i] = i - 0x350;
for(var i = 0; i < 64; i++) if(trans2[i]) trans[trans2[i]] = 0x80 + i;
for(var i = 0; i < s.length; i++){
var n = s.charCodeAt(i);
if(trans[n]) n = trans[n];
if(n <= 0xFF) inp += String.fromCharCode(n);
}
var i = 0;
while (i < inp.length) {
chr1 = inp.charCodeAt(i++);
chr2 = inp.charCodeAt(i++);
chr3 = inp.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output += _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
}
return output;
}
Замените на:
function base64x(s) {
var utf8table = [[0x80, 0], [0x800, 0xc0], [0x10000, 0xe0], [0x200000, 0xf0]];
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._";
var i, j, k, c, arr = [], result = '', enc = [];
for (i = 0; i < s.length; i++) {
c = s.charCodeAt(i);
if (c >> 10 == 0x36 && s.charCodeAt(i+1) >> 10 == 0x37) {
c = ((c - 0xd800) << 10) + s.charCodeAt(++i) + 0x2400;
}
for (j = 0; j < utf8table.length; j++) {
if (c < utf8table[j][0]) {
arr.push(c >> 6 * j | utf8table[j][1]);
for (k = 6 * (j - 1); k >= 0; k -= 6)
arr.push(c >> k & 0x3f | 0x80);
break;
}
}
}
for (i = 0; i < arr.length; i += 3) {
enc[0] = arr[i] >> 2;
enc[1] = ((arr[i] & 3) << 4) | (arr[i+1] >> 4);
enc[2] = ((arr[i+1] & 15) << 2) | (arr[i+2] >> 6);
enc[3] = arr[i+2] & 63;
if (isNaN(arr[i+1])) enc[2] = 64;
if (isNaN(arr[i+2])) enc[3] = 64;
result += enc.map(function(x){ return keyStr.charAt(x) }).join('');
}
return result;
}