Page Menu
Home
In-Portal Phabricator
Search
Configure Global Search
Log In
Files
F847547
custom
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sat, Apr 19, 12:47 AM
Size
17 KB
Mime Type
text/x-diff
Expires
Mon, Apr 21, 12:47 AM (19 h, 32 m)
Engine
blob
Format
Raw Data
Handle
602381
Attached To
rMCUS Modules.Custom
custom
View Options
Index: branches/1.0.x/units/widgets/widgets_config.php
===================================================================
--- branches/1.0.x/units/widgets/widgets_config.php (revision 13007)
+++ branches/1.0.x/units/widgets/widgets_config.php (revision 13008)
@@ -1,191 +1,202 @@
<?php
/**
* Sample config file for widgets
*
* @author dmitrya
* @package Development Kit
*/
defined('FULL_PATH') or die('restricted access!');
$config = Array(
'Prefix' => 'widget',
'ItemClass' => Array ('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),
'ListClass' => Array ('class' => 'kDBList', 'file'=> '', 'build_event' => 'OnListBuild'),
'EventHandlerClass' => Array ('class' => 'WidgetEventHandler', 'file' => 'widget_eh.php', 'build_event' => 'OnBuild'),
'TagProcessorClass' => Array ('class' => 'WidgetTagProcessor', 'file' => 'widget_tp.php', 'build_event' => 'OnBuild'),
'AutoLoad' => true,
'QueryString' => Array (
1 => 'id',
2 => 'Page',
3 => 'event',
4 => 'mode',
),
'RewriteListener' => 'WidgetRewriteListener',
'IDField' => 'WidgetId',
'StatusField' => Array ('Status'),
'TableName' => TABLE_PREFIX.'Widgets',
/*
'ForeignKey' => 'ParentId', // field title in TableName, linking record to a parent
'ParentTableKey' => 'ParentId', // id (or other key) field title in parent's table
'ParentPrefix' => 'parent',
'AutoDelete' => true, // delete these items when parent is being deleted
'AutoClone' => true, // clone these items when parent is being cloned
*/
+
+ // used to build editing links in admin grids
+ 'AdminTemplatePath' => 'widgets',
+ 'AdminTemplatePrefix' => 'widget_',
'TitlePresets' => Array (
'default' => Array (
'new_status_labels' => Array ('widget' => '!la_title_AddingWidget!'),
'edit_status_labels' => Array ('widget' => '!la_title_EditingWidget!'),
'new_titlefield' => Array ('widget' => '!la_title_NewWidget!'),
),
'widget_list' => Array (
'prefixes' => Array ('widget_List'), 'format' => '#section_label#',
'toolbar_buttons' => Array ('new_item', 'edit', 'delete', 'approve', 'decline', 'export', 'import', 'view', 'dbl-click',),
),
'widget_edit' => Array (
'prefixes' => Array ('widget'), 'format' => '#widget_status# - #widget_titlefield#',
'toolbar_buttons' => Array ('select', 'cancel', 'reset_edit', 'prev', 'next'),
),
),
+
+
'PermSection' => Array('main' => 'custom:widgets'),
'Sections' => Array (
'custom:widgets' => Array (
'parent' => 'custom',
'icon' => 'custom',
'label' => 'la_tab_Widgets',
'url' => Array ('t' => 'custom/widgets/widget_list', 'pass' => 'm'),
'permissions' => Array ('view', 'add', 'edit', 'delete'),
'priority' => 1,
'type' => stTREE,
),
),
'TitleField' => 'Title', // field, used in bluebar when editing existing item
// Use %1$s for local table name with prefix, %2$s for calculated fields
'ListSQLs' => Array ( // key - special, value - list select sql
'' => 'SELECT %1$s.* %2$s
FROM %1$s',
),
'ItemSQLs' => Array (
'' => 'SELECT %1$s.* %2$s
FROM %1$s',
),
'ListSortings' => Array (
'' => Array (
// 'ForcedSorting' => Array ('Priority' => 'desc'),
'Sorting' => Array ('Title' => 'asc'),
)
),
+
+ 'VirtualFields' => Array (
+ 'VirtualActionField' => Array ('type' => 'string', 'default' => ''),
+ ),
'Fields' => Array (
'WidgetId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
'Title' => Array ('type' => 'string', 'not_null' => '1', 'default' => '', 'required' => true, 'max_len' => 255),
'Description' => Array ('type' => 'string', 'formatter' => 'kFormatter', 'using_fck' => 1, 'default' => null),
'Email' => Array(
'type' => 'string', 'formatter' => 'kFormatter',
'regexp'=> '/^(' . REGEX_EMAIL_USER . '@' . REGEX_EMAIL_DOMAIN . ')$/i',
'sample_value' => 'email@domain.com',
'not_null' => 1, 'default' => '',
'error_msgs' => Array ('invalid_format' => '!la_invalid_email!')
),
'Type' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter', 'use_phrases' => 1,
'options' => Array (
1 => 'la_opt_Default',
2 => 'la_opt_Custom',
),
'not_null' => 1,
'default' => 1,
'required' => 1,
),
'Phone' => Array (
'type' => 'string', 'formatter' => 'kFormatter',
'default' => '', 'using_fck' => 1, 'not_null' => 1),
'Qty' => Array ('type' => 'double', 'required' => 0, 'not_null' => 1, 'default' => 0),
'Status' => Array (
'type' => 'int', 'formatter' => 'kOptionsFormatter',
'options' => array (1 => 'la_Active', 2 => 'la_Pending', 0 => 'la_Disabled'),
'use_phrases' => 1, 'not_null' => 1, 'default' => 2,
),
'CreatedOn' => Array (
'type' => 'int', 'formatter' => 'kDateFormatter',
- 'time_format' => '', 'input_time_format' => '', 'default'=>'#NOW#', 'default' => NULL),
+ 'time_format' => '', 'input_time_format' => '', 'default'=>'#NOW#'),
'Good' => Array (
'type' => 'int', 'formatter' => 'kOptionsFormatter',
'options' => Array(1 => 'la_Yes', 0 => 'la_No'),
'use_phrases' => 1, 'not_null' => 1, 'default' => 0
),
'BirthTime' => Array (
'type' => 'int', 'formatter' => 'kDateFormatter',
'date_format' => '', 'input_date_format' => '',
'default' => null
),
'Image' => Array(
'type' => 'string', 'formatter' => 'kUploadFormatter',
'max_size' => MAX_UPLOAD_SIZE, // in Bytes !
'file_types' => '*.jpg;*.gif;*.png', 'files_description'=>'!la_hint_ImageFiles!',
'upload_dir' => '/system/user_files/', // relative to project's home
'as_image' => true, 'thumb_width' => 100, 'thumb_height' => 100,
'multiple' => false, // false or max number of files - will be stored as serialized array of paths
'direct_links' => false, // use direct file urls or send files through wrapper (requires mod_mime_magic)
'required' => 1, 'default' => null
),
'DataFile' => Array(
'type' => 'string', 'formatter'=>'kUploadFormatter',
'max_size' => MAX_UPLOAD_SIZE, // in Bytes !
'file_types' => '*.*',
'files_description' => '!la_hint_AllFiles!',
'upload_dir' => '/system/user_files/', // relative to project's home
'as_image' => false,
'multiple' => 5, // false or max number of files - will be stored as serialized array of paths
'direct_links' => true, // use direct file urls or send files through wrapper (requires mod_mime_magic)
'default' => null
),
),
'Grids' => Array (
'Default' => Array (
// 'Icons' => Array ('default' => 'icon16_custom.gif'),
'Fields' => Array (
'WidgetId' => Array ('title' => 'la_col_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter'),
- 'Title' => Array ('title' => 'la_col_Name', 'data_block' => 'grid_delete_td'),
+ 'Title' => Array ('title' => 'la_col_Name', 'data_block' => 'grid_custom_td'),
'Image' => Array ('title' => 'la_col_Image', 'data_block' => 'grid_image_td'),
'Type' => Array ('title' => 'la_col_Type', 'filter_block' => 'grid_options_filter'),
'Status' => Array ('title' => 'la_col_Status', 'filter_block' => 'grid_options_filter'),
'Good' => Array ('title' => 'la_col_Good'),
'Qty' => Array ('title' => 'la_col_Qty', 'header_block' => 'grid_column_title_no_sorting', 'filter_block' => 'grid_float_range_filter'),
'Email' => Array ('title' => 'la_col_Email'),
'Phone' => Array ('title' => 'la_col_Phone'),
'CreatedOn' => Array ('title' => 'la_col_CreatedOn', 'filter_block' => 'grid_date_range_filter'),
'Description' => Array ('title' => 'la_col_Description'),
// 'BirthTime' => Array ('title' => 'la_col_BirthTime', 'filter_block' => 'grid_date_range_filter'),
+ 'VirtualActionField' => Array ('title' => 'la_col_Action', 'data_block' => 'grid_delete_td'),
),
),
),
'ConfigMapping' => Array (
'PerPage' => 'Comm_Perpage_Widgets',
'ShortListPerPage' => 'Comm_Perpage_Widgets_Short',
),
);
Index: branches/1.0.x/units/widgets/widget_tp.php
===================================================================
--- branches/1.0.x/units/widgets/widget_tp.php (revision 13007)
+++ branches/1.0.x/units/widgets/widget_tp.php (revision 13008)
@@ -1,22 +1,47 @@
<?php
defined('FULL_PATH') or die('restricted access!');
/**
* Widgets Tag Processor (sample)
*
*/
class WidgetTagProcessor extends kDBTagProcessor {
/**
* Custom tag to output "Hello World!"
*
* @param Array $params
* @return string
*/
function NewTag($params)
{
return 'Hello world!';
}
+
+ /**
+ * Returns a link for editing product
+ *
+ * @param Array $params
+ * @return string
+ */
+ function ItemEditLink($params)
+ {
+ $object =& $this->getObject();
+ /* @var $object kDBList */
+
+ $edit_template = $this->Application->getUnitOption($this->Prefix, 'AdminTemplatePath') . '/' . $this->Application->getUnitOption($this->Prefix, 'AdminTemplatePrefix') . 'edit';
+
+ $url_params = Array (
+ 'm_opener' => 'd',
+ $this->Prefix.'_mode' => 't',
+ $this->Prefix.'_event' => 'OnEdit',
+ $this->Prefix.'_id' => $object->GetID(),
+ 'pass' => 'all,'.$this->Prefix,
+ 'no_pass_through' => 1,
+ );
+
+ return $this->Application->HREF($edit_template, '', $url_params);
+ }
}
\ No newline at end of file
Index: branches/1.0.x/admin_templates/widgets/widget_list.tpl
===================================================================
--- branches/1.0.x/admin_templates/widgets/widget_list.tpl (revision 13007)
+++ branches/1.0.x/admin_templates/widgets/widget_list.tpl (revision 13008)
@@ -1,136 +1,139 @@
<inp2:m_include t="incs/header" />
<inp2:m_RenderElement name="combined_header" prefix="widget" section="custom:widgets" title_preset="widget_list" pagination="1"/>
<!-- ToolBar -->
<table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
<tbody>
<tr>
<td>
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td >
<script type="text/javascript">
a_toolbar = new ToolBar();
a_toolbar.AddButton(
new ToolBarButton(
'new_item',
'<inp2:m_phrase label="la_ToolTip_NewWidget" escape="1"/>::<inp2:m_phrase label="la_Add" escape="1"/>',
function() {
std_precreate_item('widget', 'custom/widgets/widget_edit')
}
)
);
function edit() {
std_edit_item('widget', 'custom/widgets/widget_edit');
}
a_toolbar.AddButton(
new ToolBarButton(
'edit',
'<inp2:m_phrase label="la_ToolTip_Edit" escape="1"/>::<inp2:m_phrase label="la_ShortToolTip_Edit" escape="1"/>',
edit
)
);
a_toolbar.AddButton(
new ToolBarButton(
'delete',
'<inp2:m_phrase label="la_ToolTip_Delete" escape="1"/>',
function() {
std_delete_items('widget');
}
)
);
a_toolbar.AddButton( new ToolBarSeparator('sep1') );
a_toolbar.AddButton(
new ToolBarButton(
'approve',
'<inp2:m_phrase label="la_ToolTip_Approve" escape="1"/>',
function() {
submit_event('widget', 'OnMassApprove');
}
)
);
a_toolbar.AddButton(
new ToolBarButton(
'decline',
'<inp2:m_phrase label="la_ToolTip_Decline" escape="1"/>',
function() {
submit_event('widget', 'OnMassDecline');
}
)
);
a_toolbar.AddButton( new ToolBarSeparator('sep2') );
a_toolbar.AddButton(
new ToolBarButton(
'export',
'<inp2:m_phrase label="la_ToolTip_Export" escape="1"/>',
function() {
std_csv_export('widget', 'Default', 'export/export_progress');
}
)
);
a_toolbar.AddButton(
new ToolBarButton(
'import',
'<inp2:m_phrase label="la_ToolTip_Import" escape="1"/>',
function() {
std_csv_import('widget', 'Default', 'import/import_start');
}
)
);
a_toolbar.AddButton( new ToolBarSeparator('sep3') );
a_toolbar.AddButton(
new ToolBarButton(
'view',
'<inp2:m_phrase label="la_ToolTip_View" escape="1"/>',
function(id) {
show_viewmenu(a_toolbar,'view');
}
)
);
a_toolbar.Render();
</script>
</td>
<inp2:m_RenderElement name="search_main_toolbar" prefix="widget" grid="Default"/>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
<style type="text/css">
.red-row td.Status {
background-color: red;
}
</style>
<inp2:m_DefineElement name="grid_image_td">
<img src="<inp2:Field name='$field' format='resize:120x120'/>" <inp2:Field name='$field' format='resize:120x120;img_size' no_special='1'/> alt=""/><br />
</inp2:m_DefineElement>
<inp2:m_DefineElement name="grid_delete_td">
- <a href="<inp2:m_Link {$PrefixSpecial}_event='OnDelete' pass='m,$PrefixSpecial'/>" onclick="return confirm('Delete Record?')"><inp2:Field name="$field"/></a>
+ <a href="<inp2:m_Link {$PrefixSpecial}_event='OnDelete' pass='m,$PrefixSpecial'/>" onclick="return confirm('Delete Record?')">Delete</a>
</inp2:m_DefineElement>
+<inp2:m_DefineElement name="grid_custom_td">
+ <a href="<inp2:ItemEditLink/>" title="<inp2:m_Phrase name='la_Text_Edit' no_editing='1'/>" onclick="return direct_edit('<inp2:m_param name="PrefixSpecial"/>', this.href);"><inp2:Field field="$field" grid="$grid" format="$format"/></a>
+</inp2:m_DefineElement>
<inp2:m_RenderElement name="grid" PrefixSpecial="widget" IdField="WidgetId" grid="Default" grid_filters="1" max_row_height="100"/>
<script type="text/javascript">
Grids['widget'].SetDependantToolbarButtons( new Array('edit', 'delete', 'approve', 'decline') );
</script>
<inp2:m_include t="incs/footer"/>
\ No newline at end of file
Index: branches/1.0.x/install/install_schema.sql
===================================================================
--- branches/1.0.x/install/install_schema.sql (revision 13007)
+++ branches/1.0.x/install/install_schema.sql (revision 13008)
@@ -1,27 +1,27 @@
# place here only sql queries, that were executed on live AND dev sites !!!
CREATE TABLE Widgets (
WidgetId int(11) NOT NULL AUTO_INCREMENT,
Title varchar(255) NOT NULL DEFAULT '',
Description text,
Email varchar(255) NOT NULL DEFAULT '',
`Type` tinyint(4) NOT NULL DEFAULT '1',
Phone varchar(50) NOT NULL DEFAULT '',
Qty double NOT NULL DEFAULT '0',
`Status` tinyint(4) NOT NULL DEFAULT '2',
- CreatedOn int(11) DEFAULT NULL,
+ CreatedOn int(10) unsigned DEFAULT NULL,
Good tinyint(4) NOT NULL DEFAULT '0',
BirthTime int(10) unsigned DEFAULT NULL,
Image text,
- `DataFile` text,
+ DataFile text,
PRIMARY KEY (WidgetId)
);
# ===== SQLs above this line already on LIVE ================================================================================================
# place here only sql queries, that were executed on dev site !!!
# ===== SQLs above this line already on DEV ========================================================================================================
# place here only sql queries, that were executed on prod server !!!
Index: branches/1.0.x/install/english.lang
===================================================================
--- branches/1.0.x/install/english.lang (revision 13007)
+++ branches/1.0.x/install/english.lang (revision 13008)
@@ -1,19 +1,22 @@
<LANGUAGES>
<LANGUAGE PackName="English" Encoding="base64"><DATEFORMAT>m/d/Y</DATEFORMAT><TIMEFORMAT>g:i A</TIMEFORMAT><INPUTDATEFORMAT>m/d/Y</INPUTDATEFORMAT><INPUTTIMEFORMAT>g:i:s A</INPUTTIMEFORMAT><DECIMAL>.</DECIMAL><THOUSANDS>,</THOUSANDS><CHARSET>utf-8</CHARSET><UNITSYSTEM>2</UNITSYSTEM>
<PHRASES>
<PHRASE Label="la_col_Good" Module="Custom" Type="1">R29vZA==</PHRASE>
<PHRASE Label="la_col_Phone" Module="Custom" Type="1">UGhvbmU=</PHRASE>
+ <PHRASE Label="la_col_Qty" Module="Custom" Type="1">UXVhbnRpdHk=</PHRASE>
<PHRASE Label="la_fld_DataFile" Module="Custom" Type="1">RGF0YSBmaWxl</PHRASE>
<PHRASE Label="la_fld_Good" Module="Custom" Type="1">R29vZA==</PHRASE>
+ <PHRASE Label="la_fld_Image" Module="Custom" Type="1">SW1hZ2U=</PHRASE>
+ <PHRASE Label="la_fld_Qty" Module="Custom" Type="1">UXVhbnRpdHk=</PHRASE>
<PHRASE Label="la_opt_Custom" Module="Custom" Type="1">Q3VzdG9t</PHRASE>
<PHRASE Label="la_opt_Default" Module="Custom" Type="1">RGVmYXVsdA==</PHRASE>
<PHRASE Label="la_tab_Widgets" Module="Custom" Type="1">V2lkZ2V0cw==</PHRASE>
<PHRASE Label="la_title_AddingWidget" Module="Custom" Type="1">QWRkaW5nIFdpZGdldA==</PHRASE>
<PHRASE Label="la_title_EditingWidget" Module="Custom" Type="1">RWRpdGluZyBXaWRnZXQ=</PHRASE>
<PHRASE Label="la_title_In-Custom" Module="Custom" Type="1">Q3VzdG9t</PHRASE>
<PHRASE Label="la_title_NewWidget" Module="Custom" Type="1">TmV3IFdpZGdldA==</PHRASE>
<PHRASE Label="la_title_Widgets" Module="Custom" Type="1">V2lkZ2V0cw==</PHRASE>
<PHRASE Label="la_ToolTip_NewWidget" Module="Custom" Type="1">TmV3IFdpZGdldA==</PHRASE>
</PHRASES>
</LANGUAGE>
</LANGUAGES>
\ No newline at end of file
Event Timeline
Log In to Comment