ترجمه ۱۰۰٪ شد
مستندات و مدارک برای توسعه
توسعه و افزودن قابلیت های جدید
ترجمه ۱۰۰٪ شد
سلام با تشکر از آموزش کار با فریم ورکتون میشه در مورد کلاس draw , cache توضیح با مثال عملی بزنید
سلام براتون آرزوی موفقیت دارم.
روی xampp نصب کردماین ارور رو میده.
Error In query from database!
reason: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'b.permissions' in 'field list'
اطلاعات مربوط به اتصال به بانک اطلاعاتی رو در فایل config.php رو چک کنید ببینید درست وارد کردید.
همچنی از پست زیر آموزش نصب رو مطالعه کنید.
https://barnamenevis.org/showthread.p...=1#post1995052
draw و cache کلاس نیستند بلکه متد های کلاس raintpl هستند.
برای آموزش کلاس raintpl به لینک زیر مراجعه کنید.
https://barnamenevis.org/showthread.p...=1#post2004187
برای مثال عملی هم میتونید پلاگین hello رو مشاهده کنید.
https://github.com/morrning/sarkesh/.../plugins/hello
در فایل view.php هر دو متد استفاده شده و فایل html داخل پوشه tpl هم فایل قالب هست که با متد draw کامپایل میشه
بله درست وارد شده.آموزش رو هم دیدم. نشد.
بله کاملا موفق
اصولا این خطا زمانی به وجود میاد که اتصال با بانک اطلاعاتی به درستی انجام شده باشه و موتور بانک اطلاعاتی جدول مورد نظر رو نتونه پیدا کنه.که دلیلش یا ایمورت نکردن فایل sql هست یا اینکه شما فایل sql رو در دیتابیسی غیر از اونی که مشخصاتش رو در config.php وارد کردید ایمپورت کردید.
یه سوال دیگه هم داشتم و اونم اینکه شما فایل پروژه رو از کجا دانلود کردید؟
پیشنهاد میکنم آخرین نسخه ها رو از مخزن پروژه بر روی سایت github که در پست اول اشاره شده دانلود کنید.
اگه مشخصات اتصال به دیتابیس رو اشتباه وارد کرده باشید با خطای زیر مواجه میشید.
Error In query from database!
reason: SQLSTATE[28000] [1045] Access denied for user 'username'@'domain' (using password: YES)
از اینجا
https://codeload.github.com/morrning/sarkesh/zip/master
ایمپورت انجام میشه .اتصال به پایگاه داده هم درسته چون وقتی اسم ها رو عوض میکنم کلا access deny میشه.
با phpmyadmin وارد بانک اطلاعاتی بشید ببینید داخل لیست جدول ها جدولی با نام permations وجود داره؟از اینجا
https://codeload.github.com/morrning/sarkesh/zip/master
ایمپورت انجام میشه .اتصال به پایگاه داده هم درسته چون وقتی اسم ها رو عوض میکنم کلا access deny میشه.
بله اینم محتواشCapture.JPG
بله ممنونم
حالا به این صورت شده.Capture.JPG
اینم آدرسکد HTML:<!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="generator" content=" Sarkesh CMS! - Open Source Content Management" /> <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE"> <script src="./core/ect/scripts/jquery.js"></script> <script src="./core/ect/scripts/bootstrap.min.js"></script> <script src="./core/ect/scripts/bootstrap-dialog.js"></script> <script src="./core/ect/scripts/pace.min.js"></script> <link rel="stylesheet" type="text/css" href="./core/ect/styles/bootstrap.min.css" /> <link rel="stylesheet" type="text/css" href="./core/ect/styles/bootstrap-dialog.css" /> <link rel="stylesheet" type="text/css" href="./core/ect/styles/normalize.css" /> <link rel="stylesheet" type="text/css" href="./core/ect/styles/bootstrap/bootstrap-theme.min.css" /> <link rel="stylesheet" type="text/css" href="./core/ect/styles/pace/pace-theme-corner-indicator.css" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" type="text/css" href="./themes/blog/style.css" /> <link rel="shortcut icon" href="./themes/blog/favicon.ico" type="image/x-icon"> <link rel="icon" href="./themes/blog/favicon.ico" type="image/x-icon"> <script src="./core/ect/scripts/tinymce/tinymce.min.js"></script> <script> tinymce.init({selector:'textarea.editor',directionality: "LTR",language: "en"});</script> <script src="./core/ect/scripts/functions.js"></script> <title>Sarkesh | Register</title> </head> <body> <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="/">Sarkesh</a> </div> <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse navbar-ex1-collapse"> <div class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li><a href=".">Home</a></li> <li><a href=".?plugin=forum">Forums</a></li> <li><a href=".?plugin=content&action=show&cat=download">Downloads</a></li> <li><a href=".?plugin=content&action=show&id=about_us">About us</a></li> <li><a href=".http://google.com">TEST</a></li> </ul> </div> </div><!-- /.navbar-collapse --> </div><!-- /.container --> </nav> <div class="container"> <div class="row"> <div class="col-xs-8 main"> </div> <div class="col-xs-4 sidebar"> <div class="row"> <div class="panel panel-default"><div class="panel-heading"><h3 class="panel-title">User Sign in</h3></div><div class="panel-body"><div id="users_login" class="users_login" > <script language="javascript" type="text/javascript" src="../plugins/users/scripts/users.js"></script> <div id="msg" class="users_login_msg" ></div> <form id="users_login"> <div class="form-group users_login"> <label for="users_username"> Username: </label> <input type="text" id="users_username" class="form-control" name="users_username" placeholder="Username"> <label for="users_password"> Password: </label> <input type="password" id="users_password" class="form-control" name="users_password" placeholder="******"> <div class="checkbox"> <label> <input type="checkbox" id="users_remember" name="users_remember" value="yes"> Remember me! </label> </div> <input type="button" class="form-control btn btn-primary" onclick="users_login()" value="Sign in"> <a href=".?plugin=users&action=forget_password" >Forget your password?</a> <br /> <br /> <div> <p>Don't have account? <a href=".?plugin=users&action=register" class="btn btn-primary btn-sm" role="button"> Sign up </a></p> </div> </div> </form> </div></div></div><div class="panel panel-default"><div class="panel-heading"><h3 class="panel-title">Reset password</h3></div><div class="panel-body"><div id="users_login" class="users_login" > <script language="javascript" type="text/javascript" src="../plugins/users/scripts/users.js"></script> <div id="msg" class="users_forget_password" ></div> <form> <div class="form-group users_forget"> <label for="users_email"> Email: </label> <input type="text" id="users_email" class="form-control" name="email" placeholder="Email"> <br /> <div><p>Enter your email and we send reset password request to your email.</p></div> <input type="button" class="form-control btn-primary" onclick="users_forget_password()" value="Send email"> </div> </form> </div></div></div><div class="panel panel-default"><div class="panel-heading"><h3 class="panel-title">Languages</h3></div><div class="panel-body"><div id="languages_select" class="languages_select" > <script language="javascript" type="text/javascript" src="../plugins/languages/scripts/languages.js"></script> <div id="msg" class="languages_select_msg" ></div> <form> <select class="languages_selector form-control" onchange="languages_change()"> <option value="en_US"> English - United States </option> <option value="fa_IR"> فارسی - ایران </option> </select> </form> </div></div></div><div class="panel panel-default"><div class="panel-heading"><h3 class="panel-title">User Menu</h3></div><div class="panel-body"> <div class="navbar-collapse collapse"> <ul class="nav-pills nav-stacked""> <li><a href=".">about us</a></li> </ul> </div></div></div> </div> <div class="row"> </div> </div> </div> <hr> <footer> <div class="row"> <div class="col-xs-12"> <p></p> <p>Copyright © Sarkesh LTD 2013</p><br /> </div> </div> </footer> </div><!-- /.container --> </body> </html>
کد HTML:http://localhost/sarkesh/?plugin=users&action=register
ببخشید از اینجا دانلود کردم
https://bitbucket.org/morrning/sarkesh/downloads
الان این شده ولی دکمه ثبت نام کار نمیکنه.
Capture.JPG
مشکلی وجود نداره چون کامیت های ارسالی روی تمام مخزن ها ارسال میشن.ببخشید از اینجا دانلود کردم
https://bitbucket.org/morrning/sarkesh/downloads
الان این شده ولی دکمه ثبت نام کار نمیکنه.
از بابت دکمه ثبت نام هم باید به نکات زیر دقت کنید.
- حداقل طول کاراکتر برای کلمه عبور 8 کاراکتر هست.
- تا زمانی که خطاهای مربوط به نام کاربری و ایمل و ... بالای صفحه با رنگ قرمز وجود داشته باشند فرم ثبت نام ارسال نمیشود.
اگه میخوایید به سیستم ورود کنید میتونید از نام کاربری sarkesh و کلمه عبور sarkesh123456 استفاده کنید . همچنین برای ورود به محیط مدیریت میتونید از آدرس زیر استفاده کنید
http://localhost/?panel=admin
همچنین فایل ضمیمه رو دانلود و جایگزین فایل زیر کنید
/plugins/users/module.php
مرسی .فقط دکمه کار نکرد .موفق باشید .
شب خوش.
ضمن عرض خسته نباشید و تشکر برای زحماتی که دارید می کشید.
دیدم اگر صحبتی نکنم در راهی اشتباهی که دارید میرید شریک میشم. پس با اجازه چند نکته بیان می کنم و هدفم فقط انتقاد سازنده و جلو گیری از اتلاف وقت شما هست.
ببینید اگر شما قصد دارید کتابخانه یا فریم ورکی رو برای کارهای شخصی خودتون ایجاد کنید که هیچ جای صحبتی نیست. چهار دیواری اختیاری و کسب تجربه و ... همراهش هست.
اما اگر قصد دارید یک فریم ورک ایجاد کنید که ابزار کار شما و افراد دیگه ای بشه. و در کار توسعه آن افرادی دیگر هم مشارکت داشته باشند. باید خیلی جدی تر روی لاجیک فریم ورک کار کنید. من چند مورد رو اشاره می کنم :
۱- فریم ورک ها از یک یا ترکیبی از چند معماری پشتیبانی و تبعیت می کنند. در صورتی که در پروژه شما دیده نمیشه .
۲- فریم ورک ها از یک استاندارد کلی برای نام گذاری و کلا قواعد نام گذاری استفاده می کنند. در فریم ورک های پی اچ پی این استاندارد ها در چهار نسخه تهیه شده که در آدرس http://www.php-fig.org/ قرار دارند.
فریم ورک تخصصی من کیک پی اچ پی هست. اما چون با نسخه های مختلف استاندارد ها آشنایی دارم. خیلی راحت می تونم سویچ کنم روی لارول یا سیمفونی یا زند. به این دلیل که هر کدام از فریم ورک ۹۵٪ استاندارد ها رو رعایت می کنند. پس برایم این تغییر بستر کاری غریبه و سخت نیست. و همین هم باعث میشه که فردا افرادی رو جذب کنید. تا با شما در توسعه یاری بدند.
در کل آرزوی پیشرفت و موفقیت براتون دارم. اگر دوست داشتید می تونم مباحث ریشه ای تر مثل چرخه زندگی درخواست ها در فریم ورک و نحوه ارتباط لایه ها رو بیشتر براتون باز کنم.
حرف شما کاملا درسته و بنده هم اینو قبول دارم
من خودم هم قبلا با cakephp برنامه مینوشتم . من در این پروژه قصدم فقط سریعتر کردن زمان توسعه نرم افزار ها هست. این زمان در یه بخشی در ایجاد کنترل های پیش ساخته برای برنامه نویسا کوتاه میشه و از طرف دیگه با حذف پیچیدگی های غیرضروری سعی در رسیدن به این هدف دارم .
بنده خودم اطلاع دارم که بعضی از جاهایی که توسعه میدم فعلا در هیچ استانداردی تعریف نشده ولی اینو به پای ساده کردن کار برای توسعه دهنده بزارید.
مثلا در بحث مسیریابی به جای دادن حق انتخاب به توسعه دهنده برای ایجاد مسیر های درخواست اومدم دو مسیر طراحی کردم که ارتباط کاربر با پلاگین های نوشته شده رو برقرار کنه این وسط خوبی هایی هم داره و اونم اینکه سردرگمی کمتری به وجود میاد ...
من در توسعه این پروژه سعی میکنم برای انجام هر کاری فقط و فقط یک راه حل در فریمورک وجود داشته باشه تا از موازی کاری ها جلوگیری کنم. در یک کلام به جای دادن ۱۰ آپشن بی کیفیت ۱ آپشن با کیفیت در اختیار توسعه دهنده قرار داده بشه تا توسعه دهنده از مسیر اصلی که همون توسعه سریع و چابک توسعه نرم افزار هست خارج نشه.
پس گزینه شخصی بودن مطرح هست. تو این حالت هیچ جای بحثی نیست. آخر آخرش اگر هیچ هم ته ماجرا نمونه همین تجربه ای که بدست میاد خیلی ارزش داره و باعث باز شدن ذهن برای پروژه های بعدی میشه. بابت پشتکارتون نبریک میگم
روی مخزن پروژه رویداد های click پی اچ پی و جاوا اسکریپت تقریبا پیاده سازی شدن. البته فقط برای کنترل ctr_button
حالا از همه دوستانی که قصد همکاری دارن خواهشمندم درباره رویداد ها و پروپرتی هایی که کنترل ctr_button باید داشته باشه دیدگاهاشون رو اعلام کنن. که رویداد های اضافی و پروپرتی های به درد نخور الکی پیاده سازی نشن.
برای شروع میتونید اینجور در نظر بگیرید که button در html چه چیزهایی نداره که باید اضافه بشه.
بنده سعی میکنم دیدگاه های مفید رو در کدنویسیم وارد کنم.
خدمت zoghal عزیز عرض کنم که اگه قصدم ساخت یه چیزی مثل yii یا cakephp بود مطمئن باشید دنبال این پروژه رو نمیگرفتم چون اختراع دوباره چرخ کار بیهوده ای هست.
هدف اصلی نزدیک کردن برنامه نویسی تحت وب به برنامه نویسی تحت ویندوز هست که در کنترل ها و رویدادگرایی اونا نهفته شده. در سرانجام این پروژه هم یه IDE میخوام طراحی کنم که مثل ویژوال استودیو برنامه نویس فقط کنترل ها رو روی فرمش درگ کنه و برا اونا کد بنویسه برای برنامه نویس تحت وب حتی فکر کردن به اینجور برنامه نوشتن هم زیباست. حس من اینه که این پروژه میتونه چیز جدیدی برای گفتن داشته باشه . شک نکنید اگه ایدهای پشت این قضیه نبود قطعا دنبالش رو نمیگرفتم.
بنده تا جایی که هدف ایدم رو بیان کنم این پروژه رو توسعه میدم و از اون به بعد منتظر فیدبک ها جامعه کاربری میمونم. ادامه پروژه از اون مرحله به بعد به حمایت جامعه کاربری بستگی داره.
ctr_button:
این کنترل در واقع یه دکمه html هست که یه سری قابلیت های جدید از جمله توانایی پاسخ به رویداد ها مثل click در سمت سرور براش فراهم شده.
برای ترسیم این فرم ابتدا باید یه متغییر در فایل قالب در نظر بگیرید و سپس مقدار بازگشتی از متد draw از این کنترل رو بهش نسبت بدید.
پروپرتی ها:
لیست خصوصیات این کنترل در لیست زیر قابل مشاهده هست
- NAME برای ایجاد تمایز بین کنترل های روی فرم از این پروپرتی استفاده میشه. دقت کنید که در یک فرم هیچ دو کنترل هم نوعی نباید نام یکسان داشته باشند. اگه نام ها رو یکسان در نظر بگیرید با مشکل در قسمت رویداد ها مواجع میشید.
- LABEL این پروپرتی متنی هست که باید روی دکمه نمایش داده بشه.مقدار پیشفرض این پروپرتی هم Button هست
- FORM این پروپرتی مشخص کننده این هست که دکمه مورد نظر به چه فرمی نسبت داده شده .این پروپرتی یه مزیت داره و اونم اینکه در برنامه نویسی بدون Ajax هم میشه از کنترل ها استفاده کرد.
توجه: در رویداد سمت مرورگر تنها میتوانید به المان هایی دسترسی داشته باشید که دارای پروپرتی FORM یکسانی هستند.
- TYPE نوع دکمه رو مشخص میکنه که میتونه یکی از مقادیر زیر باشه. هر کدوم از مقادیر زیر ترکیب رنگ دکمه رو تغییر میدن برای مثال success رنگ دکمه رو سبز میکنه.
- default
- primary
- success
- info
- warning
- danger
- link
- none
توجه: در حالت استفاده از گذینه none کنترل از bootstrap گرفته شده و تنها توسط استایل های تنظیم شده در پروپرتی STYLE و کلاس های تعریف شده در پروپرتی CLASS استایل دهی خواهد شد.
- DISABLE این پروپرتی یک مقدار بولیین میگیره که به طور پیشفرض FALSE هست . در مقدار FALSE کنترل فعال هست و اگه برابر TRUE باشه کنترل غیر فعال میشه.
- CLASS این پروپرتی برای اضافه کردن کلاس های CSS به کنترل هست. اگه قصد دارید بیش از یک کلاس به کنترل اضافه کنید با فاصله(SPACE) کلاس ها رو از هم جدا کنید.
- CSS_FILE این پروپرتی برای چسپاندن فایل CSS که کلاس های تعریف شده در پروپرتی CLASS تعریف شده اند استفاده میشود. برای مثال میتوانید به پروپرتی CLASS مقدار TEST را نسبت دهید سپس در فایل CSS پس از تعریف و درج دستورات CSS آدرس این فایل را برای ضمیمه کردن به صفحه در این پروپرتی قرار دهید.
مثال:
$a = new ctr_button;
$a->configure('TYPE', './themes/test.css');
$a->draw();
- STYLE توسط این پروپرتی مستقیما میتوانید دستورات CSS را برای کنترل وارد کنید . توجه داشته باشید که بین دستورات از علامت سیمی کالن (;) برای جداکردن دستورات از یکدیگر استفاده کنید.
- SCRIPT_SRC این پروپرتی برای قرار دادن فایل های جاوا اسکریپت به هدر صفحات استفاده میشه. توابع جاوا اسکریپتی مربوط به رویدادها رو در یک فایل ذخیره کنید سپس توسط این پروپرتی این فایل رو به هدر صفحه سنجاق کنید.
رویداد ها:
- J_ONCLICK این پروپرتی تابع جاوا اسکریپتی رو نشون میده که در صورت کلیک روی فرم باید اجرا بشه.
- P_ONCLICK_FUNCTION این پروپرتی نشان دهنده تابع PHP هست که در صورت کلیک روی فرم باید اجرا بشه. دقت کنید که این تابع باید در کلاس controller یکی از پلاگین ها به صورت public تعریف شده باشه و یک آرگومان ورودی برای دریافت خصوصیات المان های روی مرورگر داشته باشه . دقت کنید که این تابع حتما باید همین آرگومان ورودی رو پس از ایجاد تغییرات بازگشت بده! یعنی همین آرگومان ورودی رو return کنه. آرگومانی ورودی این تابع یک آرایه از المان های روی صفحه مرورگر هست که بسته به نوع هر المان خصوصیات هر اندیس از این آرایه فرق میکنه. برای اطلاعات بیشتر درباره این متغییر از پست اول همین تایپینگ به خصوصیات المان ها مراجعه کنید.
توجه:یکی از اندیس های آرایه ورودی این تابه که یک مقدار رشته ای است که با RV مشخص شده که خودش هم یه آرایه هست که اندیس value این مقدار به رویداد J_AFTER_CLICK ارسال میشود.
- P_ONCLICK_PLUGIN مشخص کننده نام پلاگینی هست که پروپرتی P_ONCLICK_FUNCTION در controller اون تعریف شده.
- J_AFTER_ONCLICK نام تابع جاوا اسکریپتی که بعد از رویداد P_ONCLICK_FUNCTION اجرا میشه رو مشخص میکنه که باید فقط نام اون رو وارد کنید. در مرحله پیاده سازی این باید به صورتی تعریف بشه که یک آرگومان ورودی داشته باشه که این آرگومان مقدار برگشتی از رویداد P_ONCLICK_FUNCTION در اون قرار داده میشه.
- J_ONBLUR این پروپرتی تابع جاوا اسکریپتی رو نشون میده که در صورتی که فوکوس از روی کنترل برداشته بشه یا اصطلاحا رویداد onblur رخ بده تابع تعریف شده در این پروپرتی اجرا میشه.
- P_ONBLUR_FUNCTION این پروپرتی نشان دهنده تابع PHP هست که در صورت برداشته شدن فوکوس از روی کنترل باید اجرا بشه. دقت کنید که این تابع باید در کلاس controller یکی از پلاگین ها به صورت public تعریف شده باشه و یک آرگومان ورودی برای دریافت خصوصیات المان های روی مرورگر داشته باشه . دقت کنید که این تابع حتما باید همین آرگومان ورودی رو پس از ایجاد تغییرات بازگشت بده! یعنی همین آرگومان ورودی رو return کنه. آرگومانی ورودی این تابع یک آرایه از المان های روی صفحه مرورگر هست که بسته به نوع هر المان خصوصیات هر اندیس از این آرایه فرق میکنه. برای اطلاعات بیشتر درباره این متغییر از پست اول همین تایپینگ به خصوصیات المان ها مراجعه کنید.
توجه:یکی از اندیس های آرایه ورودی این تابه که یک مقدار رشته ای است که با RV مشخص شده که خودش هم یه آرایه هست که اندیس value این مقدار به رویداد J_AFTER_ONBLUR ارسال میشود.
- P_ONBLUR_PLUGIN مشخص کننده نام پلاگینی هست که پروپرتی P_ONBLUR_FUNCTION در controller اون تعریف شده.
- J_AFTER_ONBLUR نام تابع جاوا اسکریپتی که بعد از رویداد P_ONBLUR_FUNCTION اجرا میشه رو مشخص میکنه که باید فقط نام اون رو وارد کنید. در مرحله پیاده سازی این باید به صورتی تعریف بشه که یک آرگومان ورودی داشته باشه که این آرگومان مقدار برگشتی از رویداد P_ONBLUR_FUNCTION در اون قرار داده میشه.
- J_ONFOCUS این پروپرتی تابع جاوا اسکریپتی رو نشون میده که در صورتی که فوکوس روی این کنترل قرار بگیره یا اصطلاحا رویداد onfocus رخ بده تابع تعریف شده در این پروپرتی اجرا میشه.
- P_ONFOCUS_FUNCTION این پروپرتی نشان دهنده تابع PHP هست که در صورتی که فوکوس روی این کنترل قرار بگیره باید اجرا بشه. دقت کنید که این تابع باید در کلاس controller یکی از پلاگین ها به صورت public تعریف شده باشه و یک آرگومان ورودی برای دریافت خصوصیات المان های روی مرورگر داشته باشه . دقت کنید که این تابع حتما باید همین آرگومان ورودی رو پس از ایجاد تغییرات بازگشت بده! یعنی همین آرگومان ورودی رو return کنه. آرگومانی ورودی این تابع یک آرایه از المان های روی صفحه مرورگر هست که بسته به نوع هر المان خصوصیات هر اندیس از این آرایه فرق میکنه. برای اطلاعات بیشتر درباره این متغییر از پست اول همین تایپینگ به خصوصیات المان ها مراجعه کنید.
توجه:یکی از اندیس های آرایه ورودی این تابه که یک مقدار رشته ای است که با RV مشخص شده که خودش هم یه آرایه هست که اندیس value این مقدار به رویداد J_AFTER_ONFOCUS ارسال میشود.
- P_ONFOCUS_PLUGIN مشخص کننده نام پلاگینی هست که پروپرتی P_ONFOCUS_FUNCTION در controller اون تعریف شده.
- J_ONFOCUS_ONBLUR نام تابع جاوا اسکریپتی که بعد از رویداد P_ONFOCUS_FUNCTION اجرا میشه رو مشخص میکنه که باید فقط نام اون رو وارد کنید. در مرحله پیاده سازی این باید به صورتی تعریف بشه که یک آرگومان ورودی داشته باشه که این آرگومان مقدار برگشتی از رویداد P_ONFOCUS_FUNCTION در اون قرار داده میشه.
متد ها:
public function configure($key, $value)
این متد برای تنظیم کردن پروپرتی ها استفاده میشه که در آرگومان اول نام پروپرتی و در آرگومان دوم مقدار مربوطه قرار داده میشه.
public function draw()
این متد هیچ آرگومانی نداره و در صورت اجرا در واقع کنترل کامپایل میشه و کل کنترل return میشه که برای قرار دادن در محل های دلخواه استفاده بشه.
مثال: از مرحله ایجاد کنترل تا مرحله ترسیم آن
$a = new ctr_button();
$a->configure('J_ONCLICK_SRC','<script src="./plugins/hello/hello.js"></script>');
$a->configure('J_ONCLICK_FUNCTION','test');
$a->configure('P_ONCLICK_PLUGIN','hello');
$a->configure('P_ONCLICK_FUNCTION','test');
$a->configure('J_AFTERCLICK_SRC','<script src="./plugins/hello/hello.js"></script>');
$a->configure('J_AFTERCLICK_FUNCTION','test1');
echo $a->draw();
برای مشاهده نحوه ارتباط اجزا سمت سرور و سمت مرورگر و پیاده سازی کلاس ها به لینک زیر مراجعه کنید.
https://barnamenevis.org/showthread.p...=1#post2015448
آخرین ویرایش به وسیله morrning : جمعه 12 اردیبهشت 1393 در 18:11 عصر
فکر کنم بشه یک مورد Custom هم به این لیست اضافه کرد که کاربر در صورتی که هیچکدوم از این موارد رو نخواست بتونه خودش نوع دکمه رو طراحی کنه
- TYPE نوع دکمه رو مشخص میکنه که میتونه یکی از مقادیر زیر باشه. هر کدوم از مقادیر زیر ترکیب رنگ دکمه رو تغییر میدن برای مثال success رنگ دکمه رو سبز میکنه.
- default
- primary
- success
- info
- warning
- danger
- link
به نظر من اضافه کردن همین یک گزینه میتونه انعطاف پذیری خوبی بوجود بیاره
نحوه ی کار هم به این صورت می تونه باشه که کاربر نوع رو روی Custom تنظیم کنه و بعد خودش CSS های مربوط به اون رو بنویسه...
حالا خودت حرف من رو میتونی تکمیل ترش هم بکنی...
قبلا فکر اینجاش رو کرده بودم به همین دلیل پروپرتی CLASS رو قرار دادم که میشه باهاش نام کلاسها برای استایل دهی به کنترل اضافه بشه البته در هر صورت کلاس BOOTSTRAP اضافه میشه ولی میشه یه حالت none هم اضافه کرد که در این صورت از استایل دهی bootstrap استفاده نشه و فقط از کلاس هایی که در پروپرتی CLASS درج شدن برای استایل دهی استفاده کرد.
البته در این حالت باید یه پروپرتی دیگه برای چسباندن فایل css که کلاس ها در اون تعریف شدن هم تعریف کنیم.
مورد Custom که فرمودید میشه دربارش بیشتر توضیح بدید. منظورتون اینه که همونجا مستقیما دستورات css درج بشه یا اینکه فقط نام کلاس ها رو درج کنیم و در فایل css قالب کلاس ها رو تعریف کنیم؟
ممنونم که در بحث شرکت کردید چون واقعا داشتم نا امید میشدم!
به نظرم یه قابلیت کاستوم بذارین که فرد css بده یا اگه خواست نام کلاس رو تنظیم کنه یا آیدی المنت رو.
تنظیم آی دی نمیشه چون پروپرتی NAME همون آی دی المان هست.
روی تنظیم نام کلاس بحثی نیست چون با پروپرتی CLASS میشه تنظیمش کرد. به نظرتون بهتره طرف مستقیما CSS وارد کنه تا توسط پروپرتی CLASS کلاس های مربوط به المان رو تعیین کنه بعدش آدرس فایل CSS که این کلاس ها داخل اون تعریف شدن رو وارد کنه.
به نظرتون مزایا و معایب هر کدوم چی هست؟
اینکه روی کنترل باتون حساسیت دارم دلیلش اینه که میخوام موارد پیاده سازی شده برای این کنترل شبیه یه استاندارد برای همه ی کنترل های دیگه هم پیاده سازی بشه.
در مورد Custom میشه اینطور توصیف کرد که اگه کاربر این گزینه رو Set کرد ، مثلا بیاد یا آدرس فایل CSS مربوطه رو بده ، یا این که مستقیما CSS رو درج کنه .. یک چنین چیزی
در کل چیزی که بنده مد نظر دارم اینه که کاربر به بهترین نحو و به راحتی بتونه کنترل ها رو ویرایش بکنه ... چون اینا از نظر رابط کاربری که تخصص بنده هست مواردی محسوب میشن که به انعطاف پذیر شدن رابط کاربری کمک زیادی میکنن ، مثلا یه نفر دوست نداره از Bootstrap توی پروژه خودش استفاده کنه و میخواد از استایل مورد نظر خودش استفاده بکنه...
من Custom رو به عنوان مثال خدمتتون عرض کردم ، بی شک بهترین روش رو شما بهتر از من می دونید کدومه ...
البته این که گفتید سرانجام این فریمورک به یک IDE میرسه خیلی نظر منو جلب کرد و یجورایی مشتاق تر شدم که توی این پروژه نظر خودم رو بگم
چون خودم هم توی این فکر بودم که یک IDE مخصوص وب طراحی کنم ...
فقط یک سوال : IDE رو با چه زبانی قصد دارید پیاده کنید ؟
منم فکر میکنم بهترین گذینه برای شخصی سازی همین هست که شما فرمودید. سعی میکنم در روز های آینده انجامش بدم .
هدف نهایی این فریمورک این نیست که یه چیزی شبیه به cakephp یا yii بشه. من تو فکر اینم که همزمان با توسعه فریمورک یه ide هم براش طراحی کنم که محیطی شبیه به توسعه برنامه های تحت ویندوز فراهم بشه که برنامه نویس فقط کنترل ها رو روی فرم بکشه و برای رویداد های هر کنترل کد بنویسه.
زبان برنامه نویسی که میخوام استفاده کنم Qt هست البته فعلا تصمیم قطعی نگرفتم اگه گذینه بهتری مد نظرتون هست بفرمایید.
به نظرتون در درجه اول چه رویداد هایی برای کنترل ها پیاده سازی بشه که استفاده بیشتری دارند؟