Принимаем вопросы от населения
Kort |
|
---|---|
Предупреждать надо))) SED.by - создание сайтов, разработка плагинов и тем для Котонти
|
Kopusha |
|
---|---|
config.basicEntities = false; позволяет не руками править а просто открыл-сохранил запись затронутую лишними nbsp Added 1 minute later: #47262 Kort: Я скорее хотел предупредить что новый редактор вдруг такого коныка выкинул, со старым было ок
Added 54 seconds later: Ну и все на сегодня, пойду собирать аккумулятор на литийфосфате, готовимся) |
Kort |
|
---|---|
Новый -- это какой? Коробочный же такого не делает. SED.by - создание сайтов, разработка плагинов и тем для Котонти
|
Kopusha |
|
---|---|
#47262 Kort: я кстати у себя не победил error что редактор привязан к нескольким текстэреа одновременно, мне очень долго поднимать чистый текстовый котонти. Мож включи у себя на тестовом rcomm и ткни носом где включил) Added 22 seconds later: #47264 Kort: Коробочный но с сильно поменяными config Added 59 seconds later: /** * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.dtd.$removeEmpty['i'] = false; CKEDITOR.dtd.$removeEmpty['span'] = false; CKEDITOR.editorConfig = function( config ) { // Define changes to default configuration here. // For complete reference see: // https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html config.keystrokes = [ // copy here all keystrokes from _source/plugins/keystrokes/plugin.js // [ CKEDITOR.CTRL + 86, 'pastetext' ] //Fires new dialogue window for CTRL-C CTRL-V pasting text, remove if necessary ]; config.fillEmptyBlocks = false; config.basicEntities = false; config.autoParagraph = true;//Whether automatically create wrapping blocks around inline contents inside document body, this helps to ensure the integrality of the block enter mode. config.pasteFromWordPromptCleanup = true;//чистим копипаст с ворда config.pasteFromWordRemoveFontStyles = true;//чистим копипаст с ворда config.forcePasteAsPlainText = true;//чистим копипаст config.ignoreEmptyParagraph = true;//Whether the editor must output an empty value ("") if it's contents is made by an empty paragraph only. config.removeFormatAttributes = true;//A comma separated list of elements attributes to be removed when executing the "remove format" command config.toolbar = 'Full'; config.extraPlugins = 'wordcount,more,emojione,print,oembed,widget,syntaxhighlight,specialchar,mentions,codemirror'; //config.extraPlugins = 'wordcount,more,oembed,syntaxhighlight,codemirror,emojione'; config.wordcount = { // Whether or not you want to show the Paragraphs Count showParagraphs: true, // Whether or not you want to show the Word Count showWordCount: true, // Whether or not you want to show the Char Count showCharCount: true, // Whether or not you want to count Spaces as Chars countSpacesAsChars: false, // Whether or not to include Html chars in the Char Count countHTML: false, // Maximum allowed Word Count, -1 is default for unlimited maxWordCount: -1, // Maximum allowed Char Count, -1 is default for unlimited maxCharCount: -1, // Add filter to add or remove element before counting (see CKEDITOR.htmlParser.filter), Default value : null (no filter) filter: new CKEDITOR.htmlParser.filter({ elements: { div: function( element ) { if(element.attributes.class == 'mediaembed') { return false; } } } }) }; CKEDITOR.on( 'dialogDefinition', function( ev ) { // Take the dialog name and its definition from the event data. var dialogName = ev.data.name; var dialogDefinition = ev.data.definition; // Check if the definition is from the dialog we're // interested in (the 'link' dialog). //if ( dialogName == 'link' ) //{ //dialogDefinition.getContents('info').get('protocol')['items'].splice(4, 1); //} if (dialogName == 'link') { var protocolField = dialogDefinition.getContents('info').get('protocol'); var items = protocolField['items']; protocolField['items'] = items.slice(0, 2); // Оставляем только первые две опции } }); config.removePlugins = 'contextmenu,tabletools';//убирает всплывающее копипейстменю в андроиде //config.allowedContent = true; // disable ACF config.allowedContent = false; // disable ACF// судя по всему отключает вообще фильтрацию вводимого config.extraAllowedContent = 'span(*); a[!href, class](*); figure(*); figcaption(*); div(*); h2(*); h3(*); p[data-pullquote]'; config.disallowedContent = '*[on*]'; //SCAYT conf config.scayt_autoStartup = true; config.scayt_sLang = 'auto'; var bodyElement = document.body; var langValue = bodyElement.getAttribute('data-lang'); if (langValue === 'ru') { config.scayt_autoStartup = false; config.language = 'ru'; } else if (langValue === 'ua') { config.scayt_sLang = 'uk_UA'; config.language = 'uk'; } else { config.scayt_sLang = 'en_US'; config.language = 'en'; } config.scayt_minWordLength = 5; config.scayt_handleCheckDirty = false; config.scayt_handleUndoRedo = false; //config.disableNativeSpellChecker = false; config.scayt_ignoreAllCapsWords =true; config.scayt_ignoreDomainNames =true; config.scayt_ignoreWordsWithMixedCases =true; config.scayt_ignoreWordsWithNumbers =true; //config.scayt_disableOptionsStorage = 'all'; config.scayt_uiTabs ='0,1,0'; //mentions conf config.mentions = [ { marker: '@', minChars: 4, feed: '/index.php?r=autocomplete&cke=1&q={encodedQuery}', itemTemplate: '<li data-id="{id}"><img src="{avatar}" height="20" width="20" alt="{name}"> {name}</li>', //outputTemplate: '<a class="alpha-user__avatar" href="https://photo.travel/ru/users/{id}?m=details"><img src="{avatar}" height="20" width="20" alt="{name}"></a><a class="alpha-user__link" href="https://photo.travel/ru/users/{id}?m=details">{name}</a> ' //itemTemplate: '<li data-id="{id}">{name}</li>', outputTemplate: '<a class="alpha-user__link" target="_blank" href="https://photo.travel/ru/users/{id}?m=details">{name}</a> ' }, { marker: '#', minChars: 3, feed: '/index.php?r=tags&cke=1&q={encodedQuery}', itemTemplate: '<li data-id="{id}">{tag}</li>', outputTemplate: '<a class="alpha-tag__link" target="_blank" href="https://photo.travel/ru/users/{id}?m=details">{tag}</a> ' } ]; // CKEditor toolbar sets for Cotonti config.toolbar_Full = [ ['Source','Maximize'], ['Cut','Copy','PasteText'], ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'], ['Image','HorizontalRule'], ['Print','Preview','Scayt','Table','oembed','SpecialChar','Syntaxhighlight'], '/', ['Bold','Italic','Underline','Strike'], ['NumberedList','BulletedList','Blockquote'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], ['Link','Unlink'], ['Styles','Format'], ['Emojione'], ['TextColor','BGColor'] ]; config.toolbar_Medium = [ ['Bold','Italic','Underline','Strike'], ['NumberedList','BulletedList','-','Blockquote'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], ['Image','Link','Unlink','HorizontalRule'], ['TextColor','BGColor'], ['SelectAll','Cut','Copy','PasteText'], ['Undo','Redo'],['Source'] ]; config.toolbar_Basic = [ ['Bold','Italic','Underline','Strike','Emojione','-','NumberedList','BulletedList'],['Undo','Redo','JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],['Link','Unlink'],['Format'],['HorizontalRule','Maximize'] ]; config.toolbar_Comments = [ ['Bold','Italic','Underline','Strike','Emojione','-','NumberedList','BulletedList'],['Source','Maximize'] ]; // /CKEditor toolbar sets for Cotonti // The toolbar groups arrangement, optimized for two toolbar rows. // Example // config.toolbarGroups = [ // { name: 'clipboard', groups: [ 'clipboard', 'undo' ] }, // { name: 'editing', groups: [ 'find', 'selection', 'spellchecker' ] }, // { name: 'links' }, // { name: 'insert' }, // { name: 'forms' }, // { name: 'tools' }, // { name: 'document', groups: [ 'mode', 'document', 'doctools' ] }, // { name: 'others' }, // '/', // { name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] }, // { name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi' ] }, // { name: 'styles' }, // { name: 'colors' }, // { name: 'about' } // ]; // Remove some buttons provided by the standard plugins, which are // not needed in the Standard(s) toolbar. //config.removeButtons = 'Underline,Subscript,Superscript'; // Set the most common block elements. config.format_tags = 'h2;h3;h4;h5'; // Simplify the dialog windows. config.removeDialogTabs = 'image:advanced;link:advanced'; };
|
Argont |
|
---|---|
каждой группе пользователей, можно создать отдельный вид страницы, дописывая алис к шаблону как пример users.details.moderator.tpl но как сделать, что бы конкретному пользователю задать свой шаблон, основываясь на его ID или user_name?
иногда поржать над задравшим подбородок разработчиком
|
Kort |
|
---|---|
https://github.com/seditio/cot_cute В зависимости от настроек, users.details.id13.tpl или users.details.Alex.tpl SED.by - создание сайтов, разработка плагинов и тем для Котонти
|
|
This post was edited by Kort (2023-11-14 14:57, 1 year ago) |
Argont |
|
---|---|
#47357 Kort: спасибо, счас подорву ))) Добавлено 15 минут спустя: поставил,.... сам модуль обновил, ..... кеш почистил, - борода. работает у меня только тогда, когда прямо в файле модуля users.details сразу за хуком /* === Hook === */ foreach (cot_getextplugins('users.details.main') as $pl) { include $pl; } /* ===== */ вкинуть $mskin = cot_tplfile(array('users', 'details', ($cfg['plugin']['cute']['tpl_type'] == 1) ? 'id' . $urr['user_id'] : $urr['user_name']), 'module'); то так работают и по ID и по никнейму Добавлено 7 минут спустя: и перестал работать шаблон детальной страницы модератора users.details.moderator.tpl досадно Добавлено 4 минуты спустя: пришлось пока ограничиться кодом в файле модуля users.details сразу за хуком /* === начало неудавшегося хука === */ $skincustom_tpl = 'USERNICKNAME'; // никнейм конкретного пользователя if ($urr['user_name'] == $skincustom_tpl) { $mskin = cot_tplfile(array('users', 'details.USERNICKNAME'), 'module'); } /* === конец неудавшегося хука === */ знаю что не правильно, сам пытался через новый файл users.details.main.php но никак... иногда поржать над задравшим подбородок разработчиком
|
|
This post was edited by Argont (2023-11-14 16:13, 1 year ago) |
Kort |
|
---|---|
Шаблоны по имени не особо пробовал, скорее всего могут быть конфликты... SED.by - создание сайтов, разработка плагинов и тем для Котонти
|
Argont |
|
---|---|
#47359 Kort: пока никак у меня, пробую Добавлено 11 минут спустя: спасибо, что старались, но не помогло, конкретно у меня почему-то хук плагина не срабатывает для пришлось пока ограничится своим костылем, который выше, - кусок кода после хука иногда поржать над задравшим подбородок разработчиком
|
|
This post was edited by Argont (2023-11-14 16:04, 1 year ago) |
Kort |
|
---|---|
#47358 Argont: А это ты какой модуль обновлял? SED.by - создание сайтов, разработка плагинов и тем для Котонти
|
Argont |
|
---|---|
Kort |
|
---|---|
/modules/users/tpl/users.details.id1.tpl Где еще проверять, не знаю. SED.by - создание сайтов, разработка плагинов и тем для Котонти
|
Argont |
|
---|---|
Kabak |
|
---|---|
1) user_postcount в базе cot_users - это посты на форуме или созданные страницы, коменты тоже ? 2) где хранится число созданных пользователем комментариев и страниц ? |
Argont |
|
---|---|
#47385 Kabak: все созданные страницы юзера $totalitems = cot::$db->query("SELECT COUNT(*) FROM " . cot::$db->pages . " WHERE page_state=0 AND page_cat NOT LIKE 'system' AND page_ownerid='$ownerId'")->fetchColumn(); а вот подсчитать полное количество комментариев от одного пользователя ко всем статьям - что-то не соображу как.... иногда поржать над задравшим подбородок разработчиком
|