إنشاء وحدة سجل الزوار المخصصة لـ Alchemy CMS
-
13-12-2019 - |
سؤال
أحاول إنشاء وحدة سجل الزوار داخل موقع Rails باستخدام إطار عمل Alchemy CMS.لا يبدو أن هناك الكثير من التوثيق لبناء الوحدة النمطية باستخدام Alchemy، لذا فقد خرجت للتو هذه الصفحة.
لقد قمت بإنشاء وحدتي تحكم، واحدة سيستخدمها المسؤولون تسمى Guestbook_controller.rb ووضعتها ضمن التطبيق/وحدات التحكم/المشرف
module Admin
class GuestbookController < Alchemy::Admin::ResourcesController
def index
"index"
end
end
end
وآخر يمكن للضيف الوصول إليه ضمن app/controllers/guestbook_controller.rb
class GuestbookController < ActionController::Base
def index
"index"
end
end
أنوي أن يتم عرض منشورات سجل الزوار ضمن إحدى الصفحات الموجودة بالفعل داخل Alchemy وسيتم عرض نموذج أيضًا على هذه الصفحة.
يبدو نموذج سجل الزوار كما يلي:
class GuestbookEntry < ActiveRecord::Base
attr_accessible :location, :message, :name
end
يبدو ملف المسارات الخاص بي كما يلي:
resources :guestbook
namespace :admin do
resources :guestbook
end
mount Alchemy::Engine => '/'
ولدي ملف يسمى Authorization_rules.rb ضمن التكوين الذي يبدو كما يلي:إذن تفعل
role :admin do
has_permission_on :guestbook, :to => [:manage]
end
end
المشكلة الأولى التي أواجهها هي أن الانتقال إلى المسار /admin/guestbook يعطيني الخطأ "أنت غير مصرح له"، ولكن يجب استدعاء ملف قواعد التفويض بواسطة أداة التهيئة الخاصة بي، فلماذا أتلقى هذا الخطأ؟
# Registering guestbook module in Alchemy CMS
Alchemy::Modules.register_module(YAML.load_file(File.join(File.dirname(__FILE__), '../..', 'config/guestbook_module.yml')))
# Loading authorization rules and register them to auth engine instance
Alchemy::AuthEngine.get_instance.load(File.join(File.dirname(__FILE__), '../..', 'config/authorization_rules.rb'))
المحلول
مشكلة الترخيص سهلة.كل ما عليك فعله هو أن تكتب:
has_permission_on :admin_guestbook, :to => [:manage]
شيء آخر لاحظته:يجب أن يرث برنامج GuestbookController الخاص بك من Alchemy::BaseController.
ويجب عليك التأكد من أن صفحتك التي تريد عرض إدخالات سجل الزوار عليها، يجب ألا يتم تخزينها مؤقتًا بواسطة Alchemy.يمكنك القيام بذلك باستخدام cache: false
الخيار في page_layouts.yml لتخطيط صفحتك.