مشکل در نمایش ادیتور

shahinshyd

Member
با سلام خدت دوستان
من تو یک صفحه در قسمت ادمین امکان ویرایش خبر ها رو گذاشتم.
برای ویرایش خبر ها میخواستم به صفحه دیگری نره و تو همون صفحه یک پنجره باز و خبر ویرایش بشه .خوب من یک صفحه دیگه واسه ویرایش خبر ساختم که شماره اون خبر رو میگیره و با استفاده از یک پلاگین جی کوئری(http://defunkt.io/facebox/) این امکان ایجاد شد که دیگه واسه ویرایش اون خبر به صفحه بعدی نرم .تو همون صفحه یک پنجره وا میشه و اطلاعات اون خبر میاد و ویرایش میشه ولی مشکل اینجاست که ادیتور تو این پنجره اجرا نمیشه !
اینم کدی که من استفاده کردم
PHP:
 <link href="facebox.css" media="screen" rel="stylesheet" type="text/css" />
  <script src="facebox.js" type="text/javascript"></script>
  <script type="text/javascript">
    jQuery(document).ready(function($) {
      $('a[rel*=facebox]').facebox({
        loadingImage : 'loading.gif',
        closeImage   : 'closelabel.png'
      })
    })
  </script>
اگر خبر در یک صفحه مجزا ویرایش بشه ادیتور میاد ولی تو این پنجره ادیتور اجرا نمیشه

46709aa58ba5.png


d055f53a4570.png


از دوستان کسی راه دیگری به نظرش نمیرسه که برای ویرایش خبر تو همون صفحه یک کادر باز بشه من میخواستم این کادر امکان جابه جایی در صفحه هم داشته باشه که فکر میکنم این پلاگین امکانش رو نداره
 

farik

Well-Known Member
باسلام..
راستش من با این پلاگشن تا به حال کار نکردم ..ولی اگه صفحه رو با ایجکس باز میکنه طبیعیه که کار نمیکنه...شما یک سر به قسمت ایجکس بزنین در این مورد زیاد بحث شده..
اما اگه با فریم لود میکنه (که فکر نمیکنم اینطور باشه) مشکل از جای دیگه ای هست..
به هر حال اگه مشکل اول باشه و ادیتورتون tinyMCE باشه بکین تا کدش رو برای فعال و غیر فعال کردنش با ایجکس در اختیارتون بذارم..
موفق باشید...
 

shahinshyd

Member
با تشکر از پاسخ شما این سایت خود پلاگینش هست
فکر میکنم با جی کوئری کار میکنه ولی من چند تا ادیتور دیگه رو هم تست کردم ولی تو این کادر اجرا نمیشدند.
این کد و فایل هاش
 

پیوست ها

  • src.rar
    5.5 کیلوبایت · بازدیدها: 0
آخرین ویرایش:

shahinshyd

Member
از دوستان کسی راه دیگری به نظرش نمیرسه که برای ویرایش خبر تو همون صفحه یک کادر باز بشه من میخواستم این کادر امکان جابه جایی در صفحه هم داشته باشه که فکر میکنم این پلاگین امکانش رو نداره
 

farik

Well-Known Member
باسلام..
دوست عزیز شما اگه با ایجکس باشه هیچ ادیتوری مستقیم باز نمیشه..بلکه باید بگین که بعد از لود شدن صفحه دستور لود کردن ادیتور روبه صورت ایجکس اجرا کنه که اونم بعضی ادیتورا این خاصیت رو دارن مثل tiny mce...شرمنده فعلا نمیتونم کدتون رو بررسی کنم ولی در اولین فرصت در خدمتم..
موفق باشید...
 

Army.Hidden

Active Member
سلام خدمت دوستان
فکر کنم میتونی توی خود FaceBox با لود کردن یک آدرس این کار رو انجام بدی
کل ادیتور و مقدار دهی داخل ادیتور رو انجام بده و با دستوری مثل زیر توی FaceBox فراخوانی کن.

PHP:
<a href="post.php?editid=1" rel="facebox[.bolder]">Edit</a>
نمیدونم منظورم رو متوجه شدید یا نه !
 

shahinshyd

Member
یعنی شما میگید چون ادیتور تو popup facebox لود نمیشه به این صورت تو خود facebox ادیتور رو فراخوانی کنم
PHP:
 <a href="post.php?editid=1" rel="facebox[.initDocument()]">Edit</a>
جواب نداد
 

Army.Hidden

Active Member
روش های دیگه ای به نظرم نمیرسه .
دوستانی که فکرشون آزاد تره ایده بدن مشکل دوستمون حل شه
 

plague

Member
لازم نیست پنجره جدید باز کنی
این ادیتوری که استفاده میکنی فکر میکنم ckeditor باشه
کافیه که متن خبر رو توی یه div بزاری و بهش آیدی بدی مثلا id="textdiv"
وقتی رو دکمه ادیت کلیک شد
کافیه اون دیو رو با استفاده از جاوااسکریپت ( من از جی کوئری استفاده کردم نمیدوونم بدونه جی ک هم کا میکنه یا نه ) تبدیلش کنی به ادیتور خودبخود محتواش میره توی ادیتور

اینطوری تبدیل میکنی
کد:
  CKEDITOR.replace( 'textdiv',
     {    toolbar : [ [  'Bold', 'Italic', '-', 'MyButton' , 'Table','Link' , 'Unlink' ,'NumberedList','BulletedList','-','Blockquote','JustifyLeft','JustifyCenter','JustifyRight'],'/',['Font','FontSize' ,'TextColor','BGColor' ] ] ,
        language: 'fa',
             });

برای تایتل هم تایتل رو بریز توی یه span یا حالا هر چی و بهش آیدی بده
وقتی روی ادیت کلیک شد محتوای اون span رو بریز تو متغیر و سپس یدونه تکست فیلد بزار توی اون اسپن و محتوای قدیمیش رو بریز تو تکست فیلد

اگه جی کوئری استفاده کنی فوقالعاده سادست

نکته ای که باید به یاد داشته باشی اگه میخای با ایجکس اطلاعات رو بفرستی بعد از هر بار ارسال باید ادیتور رو نابود کنی وگرنه حتی اگه معمولی از توی پیج حذفش کنی باز هم از بین نرفته و دفعه دوم که روی ادیت کلیک کنی ظاهر نمیشه چون اون اینستنش قدیمیش هنوز هست
 

shahinshyd

Member
لازم نیست پنجره جدید باز کنی
این ادیتوری که استفاده میکنی فکر میکنم ckeditor باشه
کافیه که متن خبر رو توی یه div بزاری و بهش آیدی بدی مثلا id="textdiv"
وقتی رو دکمه ادیت کلیک شد
کافیه اون دیو رو با استفاده از جاوااسکریپت ( من از جی کوئری استفاده کردم نمیدوونم بدونه جی ک هم کا میکنه یا نه ) تبدیلش کنی به ادیتور خودبخود محتواش میره توی ادیتور

اینطوری تبدیل میکنی
کد:
  CKEDITOR.replace( 'textdiv',
     {    toolbar : [ [  'Bold', 'Italic', '-', 'MyButton' , 'Table','Link' , 'Unlink' ,'NumberedList','BulletedList','-','Blockquote','JustifyLeft','JustifyCenter','JustifyRight'],'/',['Font','FontSize' ,'TextColor','BGColor' ] ] ,
        language: 'fa',
             });
برای تایتل هم تایتل رو بریز توی یه span یا حالا هر چی و بهش آیدی بده
وقتی روی ادیت کلیک شد محتوای اون span رو بریز تو متغیر و سپس یدونه تکست فیلد بزار توی اون اسپن و محتوای قدیمیش رو بریز تو تکست فیلد

اگه جی کوئری استفاده کنی فوقالعاده سادست

نکته ای که باید به یاد داشته باشی اگه میخای با ایجکس اطلاعات رو بفرستی بعد از هر بار ارسال باید ادیتور رو نابود کنی وگرنه حتی اگه معمولی از توی پیج حذفش کنی باز هم از بین نرفته و دفعه دوم که روی ادیت کلیک کنی ظاهر نمیشه چون اون اینستنش قدیمیش هنوز هست

باتشکر
یعنی شما میگید که ویرایش خبر تو همون صفحه انجام بشه؟
من با جاوااسکریپت یه پنجره باز کردم که توش خبر ویرایش میشه بعد با window.close پنجره بسته میشه
ولی مشکلی که پیش میاد اینه که پنجره parent ما باید قبل یا بعد بسته شدن این پنجره رفرش بشه که هرکاری کردم کدی پیدا نشد

اگه امکان داره بیشتر توضیح بدید
 
آخرین ویرایش:

plague

Member
همین فوروم رو میبینی ؟ رو ویرایش کلیک میکنی چه اتفاقی میفته ؟
همون مطلبت تبدییل میشه به یک ادیتور و مطلب میره داخلش منظور من اینه
نیازی نداری که پنجره جدید باز کنی

اون چیزی که شما میخای که مثلا تویک پنجره یه اتفاقی بیفته و براساس اون پنجره دیگه تغییر بکنه
باید از تکنولولوژی هایی مثل push ,comet استفاده کنی که معمولا برای کارهایی مثل چت کردن استفاده میشه و جریانش طولانیه ولی در کل بخاطر منابعی که مصرف میکنه اصلا به کار شما نمیاد


توضیحات رو من بالا دادم
یه دکمه بزار به اسم ادیت
کد:
 <a href="#" onclick="edit();return false;" > edit </a>

بعد تابع edit رو توی جاوا اسکریپت اینجوری تعریف کن

کد:
function edit(){

 CKEDITOR.replace( 'textdiv',      {    toolbar : [ [  'Bold', 'Italic', '-', 'MyButton' , 'Table','Link' , 'Unlink' ,'NumberedList','BulletedList','-','Blockquote','JustifyLeft','JustifyCenter','JustifyRight'],'/',['Font','FontSize' ,'TextColor','BGColor' ] ] ,         language: 'fa',              });
}

textdiv توی کد بالا id اون div هستش که مطلب رو توش نمایش میدی

باید دکیومنت تکست ادیتور رو بخونی من مطمون نیستم که این دستورش با جاوااسکریپت خالی هم کار بکنه من جی کوئری استفاده کردم
 

farik

Well-Known Member
پاسخ نهایی

باسلام..
این دوستمون به جواب نسبی رسیدن...من فایلی که نمونه جواب رو داره رو اینجا میذارم که دوستان دیگه هم استفاده کنن....
لازم به ذکر که در facebox.js در خط 263 یک تغییر کوچیکی دادم..بقیه هم که تو صفحه mine.html هست..
http://farik.persiangig.com/defunkt-facebox-cbe32e1.rar
موفق باشید...
 

جدیدترین ارسال ها

بالا