محتویات

۱ مقدمه
۲ ایجاد یک عنوان برای toolbar کامپوننت
۳ ایجاد دکمه‌های Toolbar
۳.۱ ساختن دکمه ذخیره و بستن
۳.۲ ساختن دکمه انتخاب‌ها (options)
۴ ایجاد یک toolbar با دکمه‌های دلخواه برای کامپوننت
۵ اضافه کردن task
۶ ایجاد تب منو در Backend

مقدمه

در این مقاله آموزش کامپوننت نویسی جوملا قصد داریم چگونگی اضافه کردن toolbar به back-end کامپوننت‌ها را توضیح دهیم.

کلاسی که برای ایجاد Toolbar باید فراخوانی کنیم JToolBarHelper نام دارد. اسکریپت این کلاس در آدرس

SiteRoot\administrator\includes\toolbar.php
قرار دارد.
ایجاد یک عنوان برای toolbar کامپوننت

برای این منظور باید تابع ()title را از کلاس JToolBarHelper فراخوانی کنیم. مشخصات این تابع و الگوی استفاده از تابع ()title به صورت ذیل است.

public static function title($title, $icon = ‘generic.png’);

که در آن title$ برای مشخص کردن عنوان toolbar مورد استفاده قرار می‌گیرد و icon$ برای مشخص نمودن آیکون مورد استفاده در Toolbar مورد استفاده قرار می‌گیرد این پارامتر اختیاری است و اگر نام و پسوند تصویر مورد نظر را وارد نکنید تصویر پیش فرض جوملا جایگزین آن خواهد شد.

تصویر مذکور از آدرس زیر قابل مشاهده خواهد بود.

SiteRoot\administrator\templates\bluestork\images\header

نحوه استفاده :

JToolBarHelper::title( ‘New Custom Toolbar’);

کد بالا یک عنوان مشخص با آیکون پیش فرض همانند تصویر پایین برای کامپوننت ایجاد می‌کند.

Comptitle.png

ایجاد دکمه‌های Toolbar

در این بخش از آموزش تصمیم نحوه اضافه کردن دکمه‌های کامپوننت را به Toolbar بررسی خواهیم کرد. دکمه‌هایی همانند شکل ذیل.

Toolbar.png

برای ایجاد دکمه برای Toolbar توابع زیادی وجود دارند که مشروح مهم ترین آنها به علاوه نحوه استفاده از آنها به صورت زیر است

public static function trash($task = ‘remove’, $alt = ‘JTOOLBAR_TRASH’, $check = true);
public static function apply($task = ‘apply’, $alt = ‘JTOOLBAR_APPLY’);
public static function save($task = ‘save’, $alt = ‘JTOOLBAR_SAVE’);
public static function save2new($task = ‘save2new’, $alt = ‘JTOOLBAR_SAVE_AND_NEW’);
public static function save2copy($task = ‘save2copy’, $alt = ‘JTOOLBAR_SAVE_AS_COPY’);
public static function cancel($task = ‘cancel’, $alt = ‘JTOOLBAR_CANCEL’);
public static function checkin($task = ‘checkin’, $alt = ‘JTOOLBAR_CHECKIN’, $check = true);
public static function preferences($component, $height = ‘550’, $width = ‘875’, $alt = ‘JToolbar_Options’, $path = ”, $onClose = ”);
public static function publish($task = ‘publish’, $alt = ‘JTOOLBAR_PUBLISH’, $check = false);
public static function custom($task = ”, $icon = ”, $iconOver = ”, $alt = ”, $listSelect = true);

ساختن دکمه ذخیره و بستن

JToolBarHelper::save(‘save’);

در واقع save نام تابع task در controller.php است که با رویداد کلیک (برروی دکمه ذخیره) اجرا خواهد شد. در اکثر پروژه‌های کاربردی کامپوننت نویسی ما باید رویداد مربوطه به دکمه را مشخص کنیم. بنابراین کد اختصاصی دکمه مربوطه باید در این قسمت مشخص شود. به عنوان مثال بعد از ایجاد یک دکمه توسط کدی که در خط بالا مشخص شد، شما باید یک تابع مربوط به save در controller.phpتان بنویسید و از آن طریق عملکرد آن دکمه را مشخص کنید

public function save()
{
echo ‘I Am in Save’;
$this->display();
}

به این صورت تابع بالا ( function save ) هنگامی که رویداد کلیک برروی دکمه save انجام شد فراخوانی می‌شود.

نکته : برای آنکه تابع بالا هنگام رویداد کلیک فراخوانی شود شما مجبورید کد زیر را را در فایل default.php در داخل تگ <form> قرار دهید. فایل default.php در قسمت view و در داخل فولدر tmpl افزونه‌های جوملا قرار دارد.

<input type=”hidden” name=”task” value=”” />

ساختن دکمه انتخاب‌ها (options)

جهت دریافت پارامترها از فایل config.xml همانند systax زیر عمل می‌کنیم.

<field
name=”ratings”
type=”radio”
label=”Basic Ratings”
description=”Basic Ratings Desc”
default=”1″>
<option value=”1″>JYES</option>
<option value=”0″>JNO</option>
</field>

و یک نمونه کامل از config.xml را می‌توانید مشاهده کنید.

<?xml version=”1.0″ encoding=”utf-8″?>
<config>
<fieldset name=”Basic”
label=”Basic”
description=”Basic Label”>
<field
name=”ratings”
type=”radio”
label=”Basic Ratings”
description=”Basic Ratings Desc”
default=”1″>
<option value=”1″>JYES</option>
<option value=”0″>JNO</option>
</field>
<field
name=”catid”
type=”category”
extension=”com_content”
multiple=”true”
size=”8″
label=”JCATEGORY”
description=”COM_COMMENTS_CATEGORY_DESC”>
<option value=””>
JOPTION_ALL_CATEGORIES
</option>
</field>
</fieldset>
<fieldset name=”Advanced”
label=”Advanced”
description=”Advanced Label”>
<field
name=”enabled”
type=”radio”
label=”Advanced Label”
description=”Advanced Level Desc”
default=”1″>
<option value=”1″>JYES</option>
<option value=”0″>JNO</option>
</field>
</fieldset>
</config>

همانطور که مشخص است ما می‌توانید مقدار یک پارامتر را با استفاده از تگ <field> دریافت کنیم. اما در این بخش تصمیم داریم با استفاده از Rating مقادیر پارامترها را دریافت کنیم. برای این منظور ابتدا باید اطلاعات کامپوننت را با استفاده از دستور زیر بگیریم.

$component = JComponentHelper::getComponent( ‘com_hello’ );

با استفاده از کد زیر می‌توانیم کل پارامترها را دریافت کنیم.

$params = new JParameter( $component->params );

با استفاده از کد زیر کل پارامترهایی که دریافت کرده‌ایم را می‌توانیم نمایش دهیم.

{“ratings”:”0″,”catid”:[“”],”enabled”:”0″}

دریافت یک پارامتر خاص با استفاده از کد زیر

echo $component->params->get( ‘ratings’ );

ایجاد یک toolbar با دکمه‌های دلخواه برای کامپوننت

جهت ایجاد toolbar برای کامپوننت ما باید از تابع ()costum کلاس JToolBarHelper به صورتی در کد زیر نمایش داده شده است استفاده کنیم.

public static function custom($task = ”, $icon = ”, $iconOver = ”, $alt = ”, $listSelect = true);

با شکل کلی

JToolBarHelper::custom(‘apply’, ‘checkin’, ‘checkin’, ‘Connect’,false);

apply : نامی task ایکه باید با رویداد Onclick اجرا شود.

connect : این مورد زیر دکمه آیکون نمایش داده می‌شود.

checkin : یک آیکون است که مربوط به قالب جاری مدیریت جوملا است و از طریق (JoomlaRoot\administrator\templates\bluestork\images\toolbar) در دسترس می‌باشد. و از طریق دستورات css زیر این عکس به کامپوننت لینک می‌شود.

.icon-32-checkin
{
background-image: url(../images/toolbar/icon-32-checkin.png);
}

JToolBarHelper به دنبال نام فایل آیکون بعد از -icon-32. میگردد.

اضافه کردن task

ما مجبوریم taskهارا در controller با دستورات نظیر دستورات زیر اضافه کنیم.

$this->registerTask(‘approve’, ‘status’);

در این مثال status نام تابعی است که برای task مربوط به approve صدا زده شده است.

برای گرفتن نام task باید از دستور زیر استفاده کنیم.

JRequest::getVar(‘task’);

نوشتن تابع status در controller.php به صورت زیر خواهد بود.

public function status()
{
echo ‘I Am in Apply’;
$this->display();
}

نکته مهم : برای اینکه این تابع هنگام رویداد کلیک اجرا شود شما مجبورید که کد زیر را در فایل default.php در داخل تگ <form> قرار دهید تا این تابع فراخوانی و task اجرا شود.

<input type=”hidden” name=”task” value=”” />

ایجاد تب منو در Backend

کلاس استفاده شده : JSubMenuHelper

محل فایل : “JoomlaRoot\administrator\includes\toolbar.php”

تابع مورد استفاده قرار گرفته : ()addEntry از کلاس JSubMenuHelper.

نحوه تعریف تابع :

public static function addEntry($name, $link = ”, $active = false);

name$ جهت مشخص کردن نام submenu

link$ لینکی که محل باز شدن آیتم تب منو را مشخص می‌کند

active$ این گزینه وقتی که زیرمنو فعال است (بر روی لینک آن کلیک شده است) مقدار true می‌پذیرد و در غیر اینصورت مقدار false را خواهد داشت.

نحوه استفاده :

JSubMenuHelper::addEntry(‘View 1’, ‘index.php?option=com_hello&view=world’,true);
JSubMenuHelper::addEntry(‘Submenu2’, ‘index.php?option=com_hello’);
JSubMenuHelper::addEntry(‘Submenu3’, ‘index.php?option=com_hello’);
JSubMenuHelper::addEntry(‘Submenu4’, ‘index.php?option=com_hello’);

بنابراین شما باید خروجی همانند شکل زیر داشته باشید.

Submenu.png