الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ارجو المساعدة في تركيب محرر في لوحة تحكم Django

بدأه willpower في 6 نوفمبر 2009 · 6 رد · 1,478 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

قمت بعمل مدونة صغيرة بإستخدام اطار العمل django

والمشكلة التي تواجهني هي انني اريد تركيب محرر TinyMCE

حاولت البحث في المنتيات الاجنبية ولم افهم تريطقة التركيب :wink:

وللعلم يوجد رابطين للمحرر

tinymce.moxiecode.com

code.google.com/p/django-tinymce/

وللعلم يوجد فرق بين ملفات الرابطين

واذا واحد يعرف طريقة تركيب نوع اخر من المحررات فلا بأس اهم شي اركب محرر :lol:

وهذا موديل المواضيع الذي عملته



class Article (models.Model):
title = models.CharField(max_length=100)
pub_date = models.DateTimeField()
slug = models.SlugField(unique_for_date='pub_date')
interduction = models.TextField()
body = models.TextField(blank=True)
author = models.ForeignKey(User)
section = models.ForeignKey(Section)
def __unicode__(self):
return '%s' % self.title
def get_absolute_url(self):
return "/article/view/2009/%s.html" % self.slug
class Meta:
ordering = ['-pub_date']

تم تعديل هذه المشاركة بواسطة willpower في 6 نوفمبر 2009 في 15:17

#2

انت محتاج الإتنين

بص كيفية الإستخدام

http://django-tinymce.googlecode.com/svn/t...sing-the-widget

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#3

تسلم اخي ahmed_youssef

انا حاليا طبقت مامموجود في الرابط ادناه

http://django-tinymce.googlecode.com/svn/t...stallation.html

لكن لم افهم التالي

اقتباس
#. Copy the jscripts/tiny_mce directory from the TinyMCE distribution into a directory named js in your media root. You can override the location in your settings (see below).

هل معناه ان انسخ jscripts داخل الفولدر js

ام انسخ فقط tiny_mce داخل js

_________________________

اما بالنسبة للاستخدام

http://django-tinymce.googlecode.com/svn/t...html/usage.html

فلم افهم معظم الشرح :( ياريت لو تشرحلنا الطريقة بالعربي :thumb_up:

تم تعديل هذه المشاركة بواسطة willpower في 7 نوفمبر 2009 في 00:39

#4

انت عايز تعمل حاجة زى كدا

2132788.png

الأول ستب django-tinymce

easy_install django-tinymce

وبعد كدا حدد ال installed apps كالتالى

INSTALLED_APPS = (
	'django.contrib.auth',
	'django.contrib.contenttypes',
	'django.contrib.sessions',
	'django.contrib.sites',
	'tinymce',
	'tinymcehello',
)

لاحظ اننا ضفنا tinymce --اللى لسه مستبينه وapp عملناه اسمه tinymcehello

هنا ال urls.py الأساسية للبروجكت

urlpatterns = patterns('',
	# Example:
	# (r'^mytstsite/', include('mytstsite.foo.urls')),

	# Uncomment the admin/doc line below and add 'django.contrib.admindocs' 
	# to INSTALLED_APPS to enable admin documentation:
	# (r'^admin/doc/', include('django.contrib.admindocs.urls')),

	# Uncomment the next line to enable the admin:
	(r'^admin/', include(admin.site.urls)),
	(r'^tinymce/', include('tinymce.urls')),
	(r'^hello/', include('tinymcehello.urls')),

)
urlpatterns += patterns('',
	(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': 'site_media','show_indexes': True}), 
	)

لاحظ اخر جزئية عشان نعمل serve على الميديا بتاعتنا --فولدر site media بيحوى فولدر js --اللى هتنقل ليه فولدر tinymce اللى بيشمل ملفات ال javascript الخاصة بالإديتور

http://tinymce.moxiecode.com

بص دى كود ال form فى ملف myforms

from django import forms
from tinymce.widgets import TinyMCE

class ArticleForm(forms.Form):
	author_name=forms.CharField(label="Author")
	content = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30}, mce_attrs={'mode':"textareas", 'theme':'advanced'}))

تقدر تضيف تخصيصات حسب مامحدد فى الوثائق فى ال mce_attrs من خلال keys/values

ودى ال views.py

# Create your views here.
from django.http import Http404, HttpResponse
from django.shortcuts import render_to_response, get_object_or_404
from myforms import ArticleForm
from models import Article


def new_article(request):
	form=ArticleForm()
	payload={'f':form}
	return render_to_response('newarticle.html', payload)

ودى الmodel.py

from django.db import models

# Create your models here.
class Article(models.Model):
	author_name = models.CharField(max_length=30)
	content=models.CharField(max_length=1000)

ال urls.py

from django.conf.urls.defaults import *
from views import new_article

urlpatterns = patterns('',
		('^new/', new_article),
	)

دى الترى للأبلكيشن tinymcehello

[ahmed@localhost mytstsite]$ tree tinymcehello/
tinymcehello/
|-- __init__.py
|-- __init__.pyc
|-- models.py
|-- models.pyc
|-- myforms.py
|-- myforms.pyc
|-- templates
|   |-- base.html
|   `-- newarticle.html
|-- tests.py
|-- urls.py
|-- urls.pyc
|-- views.py
`-- views.pyc

اللى هو جزء من tsttinymce project

[ahmed@localhost mytstsite]$ ls
__init__.py   manage.py   settings.py   site_media	tstdb	urls.pyc
__init__.pyc  myforms.py  settings.pyc  tinymcehello  urls.py

وبس كدا

تم تعديل هذه المشاركة بواسطة ahmed_youssef في 8 نوفمبر 2009 في 10:05

1
(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#5

شكرا لك اخي احمد يوسف على هذه المساعدة والشرح وعذرا لتأخر في الرد لكن الحمد لله على كل حال

انا جربت طريقة اعلاه الي شرحتها لكن لأدري مالسبب في عدم ظهور المحرر حتى اني اضفت على شرحك صفحة اسمها newarticle.html واضفت فيها كود ادراج الفورم

وسأحتفظ بشرحك لربما اعود للتجربة مرة اخرى

لكن الحمد لله لقيت طريقة سهلة وتلبي احتياجي من ناحية عرض المحرر في الادمن

http://beshrkayali.com/posts/4/

وشكرا جزيلا مرة اخرى وعيد ومبارك نسأل الله يعيده علينا ونحن بأحسن حال

تم تعديل هذه المشاركة بواسطة willpower في 26 نوفمبر 2009 في 05:04

#6

بالنسبة لي اعتمدت اسلوب بسيط جدا جدا .. لكنه ايضا محدود بعض الشيء

مع ملاحظ انني عملته مع نسخة تقريبا قديمة بعض الشيء من Django و لا ادري اذا كانت لا تزال هذه الطريقة تعمل مع النسخ الجديدة

اولا, حدد الـ app اللذي تريد اضافة المحرر له

انشيء template جديدة خاصة به, يكون مسارها (داخل مجلد التمبليتات):

admin/app/change_form.html

مع استبدال app بالاسم الحقيقي للـ application

كل ما ستقوم به في هذا التمبليت هو الوراثة من admin/change_form.html مع اضافة بسيطة الى البلوك extra_head:

{% extends "admin/change_form.html" %}

{% block extrahead %}
{{ block.super }}

--- هنا تضيف الجافا سكربت الخاص بـ tinymce


{% endblock %}

ما هو الجافا سكربت اللذي نضيفه هناك؟

اولا و اهم شي:

    <script src="/media/scripts/tiny_mce/tiny_mce.js" type="text/javascript"></script>

طبعا على فرض انك منزل كود المحرر في المسار المذكور (عدل المسار الى المسار الصحيح في موقعك)

و اضف تحته الكود الخاص بتحضير المحرر

راجع:

http://wiki.moxiecode.com/index.php/TinyMCE:Installation

مثال (من الرابط اعلاه)

<script type="text/javascript">
tinyMCE.init({
	mode : "textareas"
});
</script>

و في المجموع, محتوى التمبليت:

{% extends "admin/change_form.html" %}

{% block extrahead %}
{{ block.super }}
    <script src="/media/jscript/tiny_mce/tiny_mce.js" type="text/javascript"></script>
    <script type="text/javascript">
    tinyMCE.init({
	    mode : "textareas"
    });
    </script>

{% endblock %}

هذه مجرد بداية, هناك العديد من الخيارات اللتي يمكنك اضافتها الى tinyMCE.init لتعديل شكل المحرر و تضبيطه

اللذي سيحصل هنا هو ان صفحة الادمن الخاصة بذلك الـ app سيتم اضافة محرر tinyMCE اليها

تم تعديل هذه المشاركة بواسطة hasan_aljudy في 28 نوفمبر 2009 في 04:29

#7

شكرا لك اخي حسن الجودي

الاسلوب الذي استخدمته انا مشابه لأسلوبك

في البداية اقوم بإنشاء مجلد اسمه admin داخل مجد template

واقوم بعمل ملف base_site.html

ومن ثم اكتب داخلة

{% extends "admin/base.html" %}
{% load i18n %}

{% block title %}{{ title }} | {% trans "Django Admin" %}{% endblock %}

{% block extrahead %}
<script type="text/javascript" src="/{{media_root}}/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
 tinyMCE.init({
 // General options
 mode : "textareas",
 theme : "advanced",
 plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",

 // Theme options
 theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
 theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
 theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
 theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak",
 theme_advanced_toolbar_location : "top",
 theme_advanced_toolbar_align : "left",
 theme_advanced_statusbar_location : "bottom",
 theme_advanced_resizing : true,
 });
</script>
{% endblock %}

{% block branding %}
<h1 id="site-name">{% trans "Django Admin" %}</h1>
{% endblock %}

{% block nav-global %}{% endblock %}

بالمناسبة اخي حسن انت و..... لكم الفضل بعد الله في تعرفي على الDjanGo

انا استخدمت احد المواقع الي انت برمجتها وعجبت بعملك

اسأل الله ان يحفظك من كل سوء

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…