- الرئيسية
- ما الجديد !
-
الصفحات▼
الصفحات
أهلا وسهلا بك زائرنا الكريم في منتدى دعم PBBoard الرسمي، لكي تتمكن من المشاركة ومشاهدة جميع أقسام المنتدى وكافة الميزات ، يجب عليك إنشاء حساب جديد بالتسجيل بالضغط هنا أو تسجيل الدخول اضغط هنا إذا كنت عضواً .
مشكل في زر جديد للمحرر
-
-
مشكل في زر جديد للمحرر24-11-2025 09:40 مساءً
-
Solimanمعلومات الكاتبPBBoard developer
- انضم في :
- 18-07-2009
- رقم العضوية :
- 1
- المشاركات :
- 13422
- الدولة :
- KSA
- الجنس:
- الدعوات:
- 55
- قوة السمعة:
- 82296
- موقعي:
- زيارة موقعي
-
كود الاضافة الذي تستخدمه مدمج به تلوين الخط ايضا وهو متوفر في المحرر كما انه لايدعم التحويل الى BBcode والعكس في مخرجاته والمصدر
تفضل استخدم هذا الكود:
Java(function () { function rgbToHex(rgb) { if (!rgb) return rgb; if (rgb.indexOf('#') === 0) return rgb; var m = rgb.match(/\d+/g); if (!m || m.length < 3) return rgb; var r = parseInt(m[0], 10), g = parseInt(m[1], 10), b = parseInt(m[2], 10); return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1); } function bb_format(element, content) { var color = $(element).css("background-color"); color = rgbToHex(color); return '[bgcolor=' + color + ']' + content + '[/bgcolor]'; } function _extractColorFromAttrs(attrs) { if (!attrs) return null; if (typeof attrs === "string") { return attrs; } var keysToTry = ["default", "value", "color", 0, "0"]; var candidates = []; keysToTry.forEach(function (k) { if (attrs.hasOwnProperty(k) && attrs[k]) candidates.push(attrs[k]); }); for (var k in attrs) { if (!attrs.hasOwnProperty(k)) continue; var v = attrs[k]; if (typeof v === "string" && v) candidates.push(v); } function normalizeColor(v) { if (!v || typeof v !== "string") return null; v = v.trim(); if (/^rgb(a)?\(/i.test(v)) return v; if (/^[0-9A-Fa-f]{3}$/.test(v)) { return "#" + v.split('').map(function(c){ return c + c; }).join(''); } if (/^[0-9A-Fa-f]{6}$/.test(v)) { return "#" + v; } var m = v.match(/^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/); if (m) { var hex = m[0]; if (hex.length === 4) { var short = hex.slice(1); return "#" + short.split('').map(function(c){ return c + c; }).join(''); } return hex; } return null; } for (var i = 0; i < candidates.length; i++) { var c = normalizeColor(String(candidates[i])); if (c) return c; } return null; } function bb_html(token, attrs, content) { var color = _extractColorFromAttrs(attrs) || "#ffff00"; return '<span style="background-color:' + color + ';">' + content + '</span>'; } if ($.sceditor && $.sceditor.formats && $.sceditor.formats.bbcode) { $.sceditor.formats.bbcode.set("bgcolor", { tags: { span: { style: { "background-color": null } } }, format: bb_format, html: bb_html }); } else { console.warn("SCEditor bbcode format API غير متاحة: $.sceditor.formats.bbcode"); } }()); $.sceditor.command.set('bgcolor', { _dropDown: function (editor, caller) { var colors = [ "#ffff00", "#ffeb3b", "#ffe082", "#ffd54f", "#ffca28", "#ff9800", "#ff5722", "#f44336", "#e91e63", "#9c27b0", "#673ab7", "#3f51b5", "#2196f3", "#03a9f4", "#00bcd4", "#009688", "#4caf50", "#8bc34a", "#cddc39", "#ffccbc", "#d7ccc8", "#c5cae9", "#b3e5fc", "#b2dfdb", "#c8e6c9", "#ffffff", "#000000", "#f0f0f0", "#ffe4e1", "#f5f5dc" ]; var $content = $('<div style="padding:10px; width:260px; font-family: Arial, sans-serif; font-size:13px;"></div>'); $content.append('<div style="margin-bottom:6px;font-weight:bold;">اختر لون الخلفية:</div>'); var palette = $('<div style="margin-bottom:10px;"></div>'); colors.forEach(function (color) { var box = $('<div>') .attr('title', color) .css({ width: "22px", height: "22px", background: color, border: "1px solid #888", display: "inline-block", margin: "3px", cursor: "pointer" }) .on("click", function () { applyColor(editor, color); }); palette.append(box); }); $content.append(palette); var pickerWrapper = $('<div style="margin-top:6px; display:flex; align-items:center;"></div>'); var pickerInput = $('<input type="color" value="#ffff00" style="width:44px;height:32px;cursor:pointer;border:1px solid #ccc;">'); var hexInput = $('<input type="hidden" value="#ffff00" style="width:90px;margin-left:8px;padding:6px;border:1px solid #ccc;">'); var applyBtn = $('<button type="button" style="margin-left:8px;padding:6px 8px;cursor:pointer;">تطبيق</button>'); pickerInput.on("input", function () { hexInput.val(pickerInput.val()); }); hexInput.on("input", function () { var v = hexInput.val().trim(); if (/^#([0-9A-F]{3}){1,2}$/i.test(v)) { pickerInput.val(v); } }); applyBtn.on("click", function () { var color = hexInput.val().trim(); if (!/^#([0-9A-F]{3}){1,2}$/i.test(color)) { var tryv = color.replace(/[^0-9A-Fa-f]/g, ""); if (tryv.length === 3) tryv = tryv.split('').map(function(c){return c+c;}).join(''); if (tryv.length === 6) color = "#" + tryv; } if (!/^#([0-9A-F]{6})$/i.test(color)) { alert("الرجاء إدخال كود HEX صالح مثل #ffcc00"); return; } applyColor(editor, color); }); pickerWrapper.append(pickerInput, hexInput, applyBtn); $content.append(pickerWrapper); editor.createDropDown(caller, 'bgcolor-picker', $content.get(0)); }, exec: function (caller) { $.sceditor.command.get('bgcolor')._dropDown(this, caller); }, txtExec: function (caller) { $.sceditor.command.get('bgcolor')._dropDown(this, caller); }, tooltip: "Background Color" }); function applyColor(editor, color) { try { $(editor).trigger('focus'); } catch (e) {} var inSource = false; try { inSource = !!(editor.inSourceMode && editor.inSourceMode()); } catch (e) { inSource = false; } if (inSource) { var selText = editor.getRangeHelper().selectedText(); if (selText) { editor.insert('[bgcolor=' + color + ']' + selText + '[/bgcolor]'); } else { editor.insert('[bgcolor=' + color + ']النص هنا[/bgcolor]'); } return; } try { var ok = editor.execCommand("backColor", color); if (!ok) editor.execCommand("hiliteColor", color); } catch (e) { var selHtml = editor.getRangeHelper().selectedHtml(); if (selHtml) { editor.insert('<span style="background-color:' + color + ';">' + selHtml + '</span>'); } else { editor.insert('<span style="background-color:' + color + ';">النص هنا</span>'); } } }
اسم الزر في شريط الأدوات هو bgcolor
ما الذي يفعله هذا الكود؟
✔ يعمل على وضع BBCode بالكامل
✔ تلوين النص مباشرة في المحرر (WYSIWYG)
✔ يحفظ اللون داخل BBCode عند الإرسال
✔ يعيد تحويل الـ BBCode إلى لون عند تحرير الرسالة مجددًا
✔ إضافة منتقي ألوان متكامل (Color Picker)
يتبقى لك اضافة كود PHP الخاص بالإضافة الذي تريد أن يتم تنفيذه ليتم استبداله من الـ BBcode الى كود HTML
وذلك بالتوجه إلى لوحة تحكم الإدارة» الإضافات البرمجية » إضافة برنامج مساعد جديد (خطاف)
New Plugin Name: BBcode info
Plugin Name: لاشيء
Hook Name: BBCodeParseHooks1
كود PHP الخاص بالإضافة الذي تريد أن يتم تنفيذه ليتم استبداله من الـ BBcode الى كود HTML
CODE$string = preg_replace("#\[bgcolor=([a-zA-Z]*|\#?[\da-fA-F]{3}|\#?[\da-fA-F]{6})](.*?)\[/bgcolor\]#si", "<span style=\"background-color: $1;\" class=\"mycode_color\">$2</span>", $string); $string = preg_replace('#\[bgcolor\=(.+)\](.+)\[\/bgcolor\]#iUs', "<span style=\"background-color: $1;\" class=\"mycode_color\">$2</span>", $string);
لمزيد من التفاصيل عن طريقة شرح اضافة الزر الى شريط ادوات المحرر بالاضافة وبقيه التفاضيل الأخرى ستجده مشروحه في موضوع شرح اضافة زر BBcode جديد لمحرر SCEditor لمنتديات PBBoard
الساعة الآن 02:23 AM