PDA

View Full Version : سوال: امکان درج کد PHP یا دیگر زبان ها در ادیتور و نمایش آن در سایت



ostovarit
دوشنبه 01 اردیبهشت 1393, 23:31 عصر
با سلام و خسته نباشید

من میخواهم آموزش برنامه نویسی در سایتم قرار دهم.
برای این منظور نیاز دارم کد های برنامه نویسی را در سایت درج کرده سپس نمایش دهم.

از چه ویرایشگری برای درج کدها استفاده کنم؟
مانند چیزی که در این فروم داریم نحوه درج کد و نمایش آن به چه صورت است؟

من از زبان PHP و Yii framework استفاده می کنم از اونجایی که از ویرایشگر Tiny MCE استفاده کرده ام نمیدونم چطور دکمه ای رو به نوار ابزار ویرایشگر اضافه کنم تا امکان درج کد رو به نویسنده بدهم. البته برایم مهم نیست ویرایشگر چه باشد! فقط نتیجه مطلوب حاصل شود.

http://mrprogrammer.net/wp-content/uploads/crayon-syntax-highlighter-buttun.png

پیشاپیش از راهنمایی شما ممنونم

MMSHFE
سه شنبه 02 اردیبهشت 1393, 00:25 صبح
این موضوع ارتباطی به Yii نداره و شما باید با JS کدهای ادیتور رو دستکاری کنید. توی خود سایت TinyMCE درمورد Development توضیحات کاملی گذاشته و میتونید نسخه کد مخصوص Develop اون رو دانلود کنید و تغییرات لازم رو اعمال کرده و بعد، کدها رو فشرده کنید. کافیه دکمه ای بگذارین که تگ BBCODE مربوطه رو درج کنه (مثلاً [ CODE ] [ / CODE ] - البته بدون فاصله ها) و بعد، موقع نمایش مطلب، این تگها رو با RegExp پیدا کنید و کارهای لازم رو روی اون انجام بدین و فرضاً Syntax Highlighter دلخواه رو اعمال کنید و...

ostovarit
سه شنبه 02 اردیبهشت 1393, 00:30 صبح
این موضوع ارتباطی به Yii نداره و شما باید با JS کدهای ادیتور رو دستکاری کنید. توی خود سایت TinyMCE درمورد Development توضیحات کاملی گذاشته و میتونید نسخه کد مخصوص Develop اون رو دانلود کنید و تغییرات لازم رو اعمال کرده و بعد، کدها رو فشرده کنید. کافیه دکمه ای بگذارین که تگ BBCODE مربوطه رو درج کنه (مثلاً [ CODE ] [ / CODE ] - البته بدون فاصله ها) و بعد، موقع نمایش مطلب، این تگها رو با RegExp پیدا کنید و کارهای لازم رو روی اون انجام بدین و فرضاً Syntax Highlighter دلخواه رو اعمال کنید و...

ممنون از پاسخی که دادید ...

این روش شدنی است، اما زمان بر هم هست، میخواستم بدونم پلاگین یا ادیتوری در وب میشناسید که همین روش را پیاده کرده باشد تا بتوانم در زمان پیاده سازی صرفه جویی کنم؟
یعنی در زمان درج امکان مشخص کردن کد وجود داشته باشه و در ویو با اضافه کردن js های مربوطه کد را تشخیص و با رنگ مناسب نمایش دهد ...

بنده در جستجو ها نتیجه مطلوبی نگرفتم اما چون این موضوع قدیمی هست گفتم شاید اساتید بتوانند راهنمایی کنند

MMSHFE
سه شنبه 02 اردیبهشت 1393, 00:58 صبح
نه اتفاقاً اصلاً زمان بر نیست. اگه با نسخه Development ادیتور TinyMCE یکم کار کنید میبینید که چقدر خوشدست طراحی شده (برای توسعه). کافیه یک دکمه اضافه کنید و کد JS یکی از عناصر که تگ خاص (مثلاً <b></b>) رو اضافه میکنه، کپی کنید و تغییرش بدین تا تگ موردنظر شما رو اضافه کنه. بقیه کارها هم که با PHP هست و مشکلی ندارین.

masiha68
سه شنبه 02 اردیبهشت 1393, 17:55 عصر
یه راه ساده هم هست که تقریبا کارتو راه می اندازه
کدهاتو داخل تکست اریا بزار ... اینجور اجرا نمیشن و به صورت متن ساده در نظر گرفته میشن

ostovarit
شنبه 13 اردیبهشت 1393, 15:20 عصر
نه اتفاقاً اصلاً زمان بر نیست. اگه با نسخه Development ادیتور TinyMCE یکم کار کنید میبینید که چقدر خوشدست طراحی شده (برای توسعه). کافیه یک دکمه اضافه کنید و کد JS یکی از عناصر که تگ خاص (مثلاً <b></b>) رو اضافه میکنه، کپی کنید و تغییرش بدین تا تگ موردنظر شما رو اضافه کنه. بقیه کارها هم که با PHP هست و مشکلی ندارین.

مهندس بلاخره فرصتی شد و روی این موضوع کار کردم، موفق شدم دکمه ای در تاینی ایجاد کنم که تگی مثل این چیزی که در ادیتور فروم داریم ایجاد کنه و کدم رو داخل اون نوشتم. در صفحه نمایش هم با توجه به نوع تگ رنگ مناسب رو به کد دادم.

حالا مشکلم تو خود تاینی هست مطالب صحیح در دیتابیس درج می شوند و نمایش داده میشن اما اگر ویرایش مطلب رو بزنم تاینی کدهای HTML رو اجرا میکنه و نمایش نمیده! ایده ای برای حل این مشکل دارید؟؟؟

دیگر دوستان هم اگر نظری دارن بفرمایید.
با تشکر

MMSHFE
شنبه 13 اردیبهشت 1393, 17:05 عصر
متن خروجی tinymce رو موقع درج در دیتابیس Escape (با htmlentities) نکنید و فقط تگهای خطرناک مثل script رو با strip_tags یا regexp حذف کنید.

ostovarit
شنبه 13 اردیبهشت 1393, 21:22 عصر
آقا ممنون تابعی که معرفی کردید ایده ای به من داد تا از htmlspecialchars برای نمایش استفاده کنم که جواب داد و مشکل بر طرف شد.
خواستم اطلاع رسانی بشه تا دوستان دیگه اگر دنبال این موضوع هستند، بی نتیجه نمونند ...
ار هم فکری و راهنمایی شما ممنونم