Custom targets for widget Layout Updates in Magento 2 - magento

I would like help working out how to add a custom container as a 'Layout Update' for a widget..
Currently, I only have the 3 basic options to choose from (Main Content Area, Siderbar Main and Sidebar Additional), but I would like to be able to add widgets to containers that I've created through various default.xml files.
How would I go about doing that?
Thanks,
Luke

In widget.xml You create additional area.Under catalog module you can see that.
<widget id="new_products" class="Magento\Catalog\Block\Product\Widget\NewWidget" is_email_compatible="true"
placeholder_image="Magento_Catalog::images/product_widget_new.png" ttl="86400">
<label translate="true">Catalog New Products List</label>
<description translate="true">List of Products that are set as New</description>
<parameters>
<parameter name="display_type" xsi:type="select" required="true" visible="true">
<label translate="true">Display Type</label>
<description translate="true">All products - recently added products, New products - products marked as new</description>
<options>
<option name="default" value="all_products" selected="true">
<label translate="true">All products</label>
</option>
<option name="item" value="new_products">
<label translate="true">New products</label>
</option>
</options>
</parameter>
<parameter name="show_pager" xsi:type="select" visible="true"
source_model="Magento\Config\Model\Config\Source\Yesno">
<label translate="true">Display Page Control</label>
</parameter>
<parameter name="products_per_page" xsi:type="text" required="true" visible="true">
<label translate="true">Number of Products per Page</label>
<depends>
<parameter name="show_pager" value="1" />
</depends>
<value>5</value>
</parameter>
<parameter name="products_count" xsi:type="text" required="true" visible="true">
<label translate="true">Number of Products to Display</label>
<value>10</value>
</parameter>
<parameter name="template" xsi:type="select" required="true" visible="true">
<label translate="true">Template</label>
<options>
<option name="default" value="product/widget/new/content/new_grid.phtml" selected="true">
<label translate="true">New Products Grid Template</label>
</option>
<option name="list" value="product/widget/new/content/new_list.phtml">
<label translate="true">New Products List Template</label>
</option>
<option name="list_default"
value="product/widget/new/column/new_default_list.phtml">
<label translate="true">New Products Images and Names Template</label>
</option>
<option name="list_names"
value="product/widget/new/column/new_names_list.phtml">
<label translate="true">New Products Names Only Template</label>
</option>
<option name="list_images"
value="product/widget/new/column/new_images_list.phtml">
<label translate="true">New Products Images Only Template</label>
</option>
</options>
</parameter>
<parameter name="cache_lifetime" xsi:type="text" visible="true">
<label translate="true">Cache Lifetime (Seconds)</label>
<description translate="true">86400 by default, if not set. To refresh instantly, clear the Blocks HTML Output cache.</description>
</parameter>
</parameters>
<containers>
<container name="sidebar.main">
<template name="default" value="list_default" />
<template name="names_only" value="list_names" />
<template name="images_only" value="list_images" />
</container>
<container name="content">
<template name="grid" value="default" />
<template name="list" value="list" />
</container>
<container name="sidebar.additional">
<template name="default" value="list_default" />
<template name="names_only" value="list_names" />
<template name="images_only" value="list_images" />
</container>
</containers>
</widget>
Please go through the <containers> tag above code you will understand.There is a container tag

Related

Joomla4 : how to set parameters in an extension?

I have developed a Joomla3 extension and I try to run in in Joomla4.1
In my XML file:
<extension version="3.1" type="plugin" group="content" method="upgrade">
<config>
<fields name="params">
<fieldset name="basic">
<field name="webmasterid" type="text" default="" label="Enter webmasterid"/>
<field name="password" type="password" default="" label="Enter Password"/>
</fieldset>
</fields>
</config>
But I don't see any way from my /administrator/ panel where I can set these 2 params:
webmasterid, password
What is the correct way to have them displayed in /administrator/ panel ?
(the plugin still works correctly, but I have to set these values directly in my plugin code)

odoo inheritance of view element without name or id

In odoo I try to change the recruitement form, but some of the stuctural elements dont have a name or id. When I change those elements it works fine initially, but when I upgrade the database then the rendering of the xml is stricter for some reason and gives an ParseError.
The recruitement form:
<sheet>
<div class="oe_button_box" name="button_box"/>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1><field name="name" placeholder="e.g. Sales Manager"/></h1>
</div>
<notebook>
<page string="Job Description">
<div attrs="{'invisible': [('state', '!=', 'recruit')]}">
<label for="description"/>
<field name="description" type="html"/>
</div>
</page>
<page name="description_page" string="Description">
<field name="description" type="html"/>
<div class="d-none oe_clear"/>
</page>
<page string="Recruitment">
<group>
<group name="recruitment">
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company"/>
<field name="department_id"/>
</group>
<group>
<field name="no_of_recruitment"/>
</group>
</group>
</page>
</notebook>
</sheet>
As you can see; the sheet, notebook, pages and groups mostly dont have a name. The string attribute is also not sufficient to modify with a expression in xpath. So it feels like I'm just stuck with this framework.
What I try:
<xpath expr="//sheet/notebook" position="replace">
<notebook>
<page name="description_page" string="Description">
<field name="description" type="html"/>
<div class="d-none oe_clear"/>
</page>
<page string="Recruitment">
<group>
<group name="recruitment">
<field name="branch_concept" />
<field name="branch" />
<field name="department_id" />
</group>
<group>
<field name="no_of_recruitment"/>
</group>
</group>
</page>
</notebook>
</xpath>
And this works until I do a db upgrade, then I get a parseError.
Does anybody know I can use my own structure?
In the xpath expression you use //<some_node> to 'Selects nodes in the document from the current node that match the selection no matter where they are'. You can also use /<some_node>/<some_other_node> to locate a specific element.
for example /form/sheet/notebook/page[1]

Joomla - Convenient Template Upgrades

I recently migrated a website from Jekyll to Joomla (currently 3.9). Therefore I made an own Joomla Template. It is already in production, but of course it gets regular updates. I use a quite standard development/release approach, versioning like 1.1, 1.2, 1.2.1 and so on. These numbers are always up to date in templateDetails.xml. Nothing special so far. But this has some very inconvenient issues:
Every time I upgrade the template I have to set a different template/style as default, uninstall the old version, upload and install the current version and set its style as new default. Is there really no better way for upgrading a template, especially if it has an higher version?
For each update all my configurations of the style get lost. I already put the defaults accordingly in the templateDetails.xml, so I don't have to do this on every upgrade. But I can imagine this may cause problems when I change the configuration in the back end without updating the template. This would result in potential configuration loss after an upgrade. Can I keep any style configuration when upgrading?
Third, I'm thinking of using different styles for different pages on my website. These would also get lost when upgrading, so I'd have to redefine them regularly. I also would have to reconfigure all pages using these styles to use them again. Is there a way to define several styles in templateDetails.xml, so they are stored in my zip file?
Edit: As Irfan asked for, here is my current templateDetails.xml
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.8" type="template">
<name>####</name>
<creationDate>2018-11-03</creationDate>
<author>####</author>
<authorEmail>#########.de</authorEmail>
<authorUrl>https://###.##.##</authorUrl>
<copyright>SV FOO BAR e.V.</copyright>
<license>TBA</license>
<version>0.4.0-SNAPSHOT</version>
<description>Joomla-Template fuer die Vereinshomepage des SV FOO BAR e.V.</description>
<files>
<filename>index.php</filename>
<filename>templateDetails.xml</filename>
<filename>template_preview.png</filename>
<filename>template_thumbnail.png</filename>
<filename>main.css</filename>
<filename>favicon.ico</filename>
<folder>images</folder>
<folder>html</folder>
<folder>language</folder>
<folder>js</folder>
</files>
<positions>
<position>breadcrumb</position>
<position>left</position>
<position>right</position>
<position>footer</position>
</positions>
<languages folder="language">
<language tag="de-DE">de-DE/de-DE.tpl_svFOOBAR.ini</language>
</languages>
<config>
<fields name="params">
<fieldset name="advanced">
<field
name="sitedescription"
type="text"
label="JGLOBAL_DESCRIPTION"
description="JGLOBAL_SUBHEADING_DESC"
default="This is my slogan"
filter="string" />
<field
name="copyright-from"
type="number"
default="2005"
label="TPL_SVFOOBAR_FIELDS_LABEL_COPYRIGHT_FROM"
description="TPL_SVFOOBAR_FIELDS_DESCRIPTION_COPYRIGHT_FROM"
step="1"
required="true" />
</fieldset>
<fieldset name="cookieconsent">
<field
type="spacer"
name="cookieconsent_separator_general"
label="TPL_SVFOOBAR_FIELDS_LABEL_COOKIECONSENT_SEPARATOR_general" />
<field
name="cookieconsent_activate"
type="checkbox"
label="TPL_SVFOOBAR_FIELDS_LABEL_COOKIECONSENT_ACTIVATE"
description="TPL_SVFOOBAR_FIELDS_DESCRIPTION_COOKIECONSENT_ACTIVATE"
checked="1"
value="1" />
<field
name="cookieconsent_position"
type="list"
default="top"
required="true"
label="TPL_SVFOOBAR_FIELDS_LABEL_COOKIECONSENT_POSITION"
description="TPL_SVFOOBAR_FIELDS_DESCRIPTION_COOKIECONSENT_POSITION">
<option value="top">TPL_SVFOOBAR_FIELDS_LABEL_COOKIECONSENT_POSITION_BANNER_TOP</option>
<option value="top-pushdown">TPL_SVFOOBAR_FIELDS_LABEL_COOKIECONSENT_POSITION_BANNER_TOP_PUSHDOWN</option>
<option value="bottom">TPL_SVFOOBAR_FIELDS_LABEL_COOKIECONSENT_POSITION_BANNER_BOTTOM</option>
<option value="bottom-left">TPL_SVFOOBAR_FIELDS_LABEL_COOKIECONSENT_POSITION_FLOATING_LEFT</option>
<option value="bottom-right">TPL_SVFOOBAR_FIELDS_LABEL_COOKIECONSENT_POSITION_FLOATING_RIGHT</option>
</field>
<field
type="spacer"
name="cookieconsent_separator_colors"
label="TPL_SVFOOBAR_FIELDS_LABEL_COOKIECONSENT_SEPARATOR_COLORS" />
<field
name="cookieconsent_color_banner"
required="true"
type="color"
default="#efefef"
label="TPL_SVFOOBAR_FIELDS_LABEL_COOKIECONSENT_COLOR_BANNER"
description="TPL_SVFOOBAR_FIELDS_DESCRIPTION_COOKIECONSENT_COLOR_BANNER" />
<field
name="cookieconsent_color_button"
required="true"
type="color"
default="#8ec760"
label="TPL_SVFOOBAR_FIELDS_LABEL_COOKIECONSENT_COLOR_BUTTON"
description="TPL_SVFOOBAR_FIELDS_DESCRIPTION_COOKIECONSENT_COLOR_BUTTON" />
<field
name="cookieconsent_color_banner_text"
required="true"
type="color"
default="#404040"
label="TPL_SVFOOBAR_FIELDS_LABEL_COOKIECONSENT_COLOR_BANNER_TEXT"
description="TPL_SVFOOBAR_FIELDS_DESCRIPTION_COOKIECONSENT_COLOR_BANNER_TEXT" />
<field
name="cookieconsent_color_button_text"
required="true"
type="color"
default="#ffffff"
label="TPL_SVFOOBAR_FIELDS_LABEL_COOKIECONSENT_COLOR_BUTTON_TEXT"
description="TPL_SVFOOBAR_FIELDS_DESCRIPTION_COOKIECONSENT_COLOR_BUTTON_TEXT" />
<field
type="spacer"
name="cookieconsent_separator_texts"
label="TPL_SVFOOBAR_FIELDS_LABEL_COOKIECONSENT_SEPARATOR_TEXTS" />
<field
name="cookieconsent_learnmore_text"
type="text"
default="Mehr erfahren"
label="TPL_SVFOOBAR_FIELDS_LABEL_COOKIECONSENT_LEARNMORE_TEXT"
description="TPL_SVFOOBAR_FIELDS_DESCRIPTION_COOKIECONSENT_LEARNMORE_TEXT"
filter="string" />
<field
name="cookieconsent_learnmore_link"
type="url"
default="impressum-datenschutz"
label="TPL_SVFOOBAR_FIELDS_LABEL_COOKIECONSENT_LEARNMORE_LINK"
description="TPL_SVFOOBAR_FIELDS_DESCRIPTION_COOKIECONSENT_LEARNMORE_LINK" />
<field
name="cookieconsent_message"
type="textarea"
default="Um die Funktionalität und den Inhalt der Website zu optimieren, verwenden wir Cookies. Durch die Nutzung unserer Website stimmst du der Verwendung von Cookies zu."
label="TPL_SVFOOBAR_FIELDS_LABEL_COOKIECONSENT_MESSAGE"
description="TPL_SVFOOBAR_FIELDS_DESCRIPTION_COOKIECONSENT_MESSAGE"
rows="10"
cols="5" />
<field
name="cookieconsent_dismiss_button"
type="text"
default="Verstanden"
label="TPL_SVFOOBAR_FIELDS_LABEL_COOKIECONSENT_DISMISS_BUTTON"
description="TPL_SVFOOBAR_FIELDS_DESCRIPTION_COOKIECONSENT_DISMISS_BUTTON" />
</fieldset>
</fields>
</config>
</extension>
Try updating the extension tag to include a method of upgrade:
<extension version="3.8" type="template" method="upgrade" client="site">

apex 4 gantt chart task collapser missing

I used APEX 4.2 to create a Gantt chart with the AnyGantt Library.
When i use a custom XML for the Anygantt Diagram everythign works fine. As soon as i want to use custom datagrids, the collapser is missing.
My XML is the following:
<anygantt> <settings>
<navigation enabled="True" position="Top" size="30">
</navigation>
<editing allow_edit="true">
<rounding>
<date unit="Week" step="1" />
</rounding>
</editing>
<locale>
<date_time_format week_starts_from_monday="True">
<months>
<names>January,February,March,April,May,June,July,August,September,October,November,December</names>
<short_names>Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec</short_names>
</months>
<week_days>
<names>Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday</names>
<short_names>Sun,Mon,Tue,Wed,Thu,Fri,Sat</short_names>
</week_days>
<format>
<full>%yyyy.%MM.%dd.%HH.%mm.%ss</full>
<date>%yyyy.%MM.%dd</date>
<time>%HH.%mm.%ss</time>
</format>
</date_time_format>
</locale>
</settings>
<datagrid enabled="true" width="300">
<columns>
<column attribute_name="Name" width="200" cell_align="Left">
<header>
<text>Name</text>
</header>
<format>{%Name}</format>
</column>
<column width="40" cell_align="Left">
<header>
<text>Stunden</text>
</header>
<format>{%Stunden}</format>
</column>
</columns>
</datagrid>
<styles>
<defaults>
<period>
<period_style>
<bar_style>
<labels>
<label anchor="Center" valign="Center" halign="Center">
<text>{%DISPO} %</text>
<font face="Verdana" size="10" bold="true" color="White">
</font>
</label>
</labels>
</bar_style>
</period_style>
</period>
</defaults>
<period_styles>
<period_style name="test">
<bar_style>
<labels>
<label anchor="Center" valign="Center" halign="Center">
<text>Center</text>
<font face="Verdana" size="10" bold="true" color="White">
</font>
</label>
</labels>
<middle shape="Full">
<fill enabled="true" type="Solid" color="DarkSeaGreen" />
<border enabled="true" color="#FF0000" />
</middle>
</bar_style>
</period_style>
</period_styles>
</styles>
<resource_chart><resources><resource name="AVI" id="5"/>
<resource name="CAB" id="4"/>
<resource name="Test, Test (Test)" id="3-U837751" parent="3"/>
<resource name="PL" id="3"/>
<resource name="Struktur" id="2"/>
</resources><periods><period resource_id="3-U837751" name="NAME-3-U837751" start="2015.07.28 00:00" end="2015.07.31 00:00">
<attributes>
<attribute name="DISPO"><![CDATA[,5]]></attribute>
</attributes>
</period></periods></resource_chart>
You need to add cell_align="LeftLevelPadding" to the column where you want to see the collapser. Something like:
<column attribute_name="Name" width="200" cell_align="LeftLevelPadding">
This is described in KB: http://support.anychart.com/customer/portal/articles/2077851--anygantt-4-x-collapser-is-missing-in-datagrid-column
You can find more info on columns at
http://6.anychart.com/products/anygantt/docs/users-guide/index.html?columns.html

EXT.net - Grid Panel via Entity with DropDowns, Dates, Pin Editing and Deletion

Title sounds like a real mouthful, so let me try to explain this. I'm very strong with grinding out Web Forms and this is my second crack at using a framework and MVC (don't ask about the first one). Start with a table like this:
Title: Milestones
Id int - Auto, PK
Project_Id int - FK, Many Milestones to One Project, Provided static for now
Number int
Name varchar(50)
Status_Id int - FK One Status to One Milestone
PlannedDate date
LatestEstimate date
MilestoneType_ID int - FK One Type to One Milestone
These all sit on an SQL server, are pulled in by an Entity and then are pulled in by an ObjectDataSource, like this:
<asp:ObjectDataSource runat="server" ID="MilestonesObjectSource" SelectMethod="GetByProject"
DeleteMethod="DeleteMilestone" TypeName="TCProjectManagement.Models.MilestonesAddition">
<SelectParameters>
<asp:Parameter DefaultValue="6" Name="ProjectID" Type="Int32" />
</SelectParameters>
<DeleteParameters>
<asp:Parameter Type="Int32" Name="Id" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Type="Int32" Name="Id" />
<asp:Parameter Type="Int32" Name="Number" />
<asp:Parameter Type="String" Name="Name" />
<asp:Parameter Type="Int32" Name="Status_Id" />
<asp:Parameter Type="DateTime" Name="PlannedDate" />
<asp:Parameter Type="DateTime" Name="LatestEstimate" />
<asp:Parameter Type="Int32" Name="MilestoneType_ID" />
</UpdateParameters>
</asp:ObjectDataSource>
Sofar so good. Data pull seems to work out okay. I've got a couple more Object Sources that deal exclusively with the Foriegn Keys, so I'll skip those since they seem to be working.
The problems I have are attempting to stitch together many examples that don't seem to go together well. My objectives, in no paticular order:
1) Pin Editing: Click a button to edit, click it again to confirm. Rather do this than have somebody infer to double click for a change. Sofar, this sorta works.
2) Drop Downs for Foriegn Keys: While not in edit mode, should display the "Name" field of the FK. While in edit it should be a Drop Down for options (there's only three). This stays blank dispite what I do.
3) Deletion: Press a button to blow away a row. I put the button there but it's a copy of the JS for editing. What do I need to use to have it be deletion?
4) Dates: This doesn't work at all. One of the weird parts is that from the SQL server's type of Date, it gets changed to DateTime in the Entity and stays that way throughout. However, I cannot get the desired control of ext:DateField to cooperate with the provided data since it displays a time and completely blanks out when editing.. I know I'm doing something wrong here.
5) Saving Changes: Not quite sure I set it up right (or at all).
Provisions of Javascript:
<script type="text/javascript">
var pinEditors = function (btn, pressed) {
var columnConfig = btn.column,
column = columnConfig.column;
if (pressed) {
column.pinOverComponent();
column.showComponent(columnConfig.record, true);
} else {
column.unpinOverComponent();
column.hideComponent(true);
}
};
var pinDeleters = function (btn, pressed) { };
</script>
And ASP Code:
<ext:GridPanel ID="MilestonesGridPanel" runat="server" Title="Milestones" Width="1000px"
Height="300px">
<Store>
<ext:Store ID="MilestonesGridStore" runat="server" DataSourceID="MilestonesObjectSource">
<Model>
<ext:Model runat="server" IDProperty="Id">
<Fields>
<ext:ModelField Name="Id" Type="Int" />
<ext:ModelField Name="Number" Type="Int" />
<ext:ModelField Name="Name" Type="String" />
<ext:ModelField Name="Status_Id" Type="Int" />
<ext:ModelField Name="PlannedDate" />
<ext:ModelField Name="LatestEstimate" />
<ext:ModelField Name="MilestoneType_ID" Type="Int" />
</Fields>
</ext:Model>
</Model>
</ext:Store>
</Store>
<ColumnModel>
<Columns>
<ext:Column ID="IdColumn" runat="server" DataIndex="Id" Text="DBID" Visible="false" />
<ext:ComponentColumn ID="NumberColumn" runat="server" DataIndex="Number" OverOnly="true"
Pin="true" Flex="1" Text="Number" Editor="true">
<Component>
<ext:NumberField ID="NumberColumnNumberField" runat="server" />
</Component>
</ext:ComponentColumn>
<ext:ComponentColumn ID="NameColumn" runat="server" DataIndex="Name" OverOnly="true"
Pin="true" Flex="1" Text="Name" Editor="true">
<Component>
<ext:TextField ID="NameColumnTextField" runat="server" />
</Component>
</ext:ComponentColumn>
<ext:ComponentColumn ID="StatusColumn" runat="server" DataIndex="Status_Id" OverOnly="true"
Pin="true" Flex="1" Text="Status" Editor="true">
<Component>
<ext:ComboBox ID="StatusColumnDropDownBox" runat="server" QueryMode="Local" Editable="false"
StoreID="MilestoneStatusStore" DisplayField="Name" ValueField="ID" EmptyText="Empty" />
</Component>
</ext:ComponentColumn>
<ext:ComponentColumn ID="PlannedDateColumn" runat="server" DataIndex="PlannedDate"
OverOnly="true" Pin="true" Flex="1" Text="Planned Date" Editor="true">
<Renderer Format="Date" FormatArgs="'m/d/y'" />
<Component>
<ext:DateField ID="PlannedDateColumnTextField" runat="server" Format="MM/dd/yyyy"
EmptyText="Empty" />
</Component>
</ext:ComponentColumn>
<ext:ComponentColumn ID="LatestEstimateColumn" runat="server" DataIndex="LatestEstimate"
OverOnly="true" Pin="true" Flex="1" Text="Latest ETA" Editor="true">
<Renderer Format="Date" FormatArgs="'m/d/y'" />
<Component>
<ext:DateField ID="LatestEstimateColumnTextField" runat="server" Format="MM/dd/yyyy"
EmptyText="Empty" />
</Component>
</ext:ComponentColumn>
<ext:ComponentColumn ID="MilestoneTypeColumn" runat="server" DataIndex="MilestoneType_ID"
OverOnly="true" Pin="true" Flex="1" Text="Milestone Type" Editor="true">
<Component>
<ext:ComboBox ID="MilestoneTypeColumnComboBox" runat="server" QueryMode="Local" Editable="false"
StoreID="MilestoneTypesStore" DisplayField="Name" ValueField="ID" EmptyText="Empty" />
</Component>
</ext:ComponentColumn>
<ext:ComponentColumn ID="EditColumn" runat="server" Width="30" PinAllColumns="false"
AutoWidthComponent="false" OverOnly="true" Text="Edit" Sortable="False">
<Component>
<ext:Button ID="EditButton" runat="server" ToolTip="Pin Editors" Icon="Pencil" AllowDepress="true"
EnableToggle="true" Width="25">
<Listeners>
<Toggle Fn="pinEditors" />
</Listeners>
</ext:Button>
</Component>
</ext:ComponentColumn>
<ext:ComponentColumn ID="DeleteColumn" runat="server" Width="30" PinAllColumns="false"
AutoWidthComponent="false" OverOnly="true" Text="Delete" Sortable="False">
<Component>
<ext:Button ID="DeleteButton" runat="server" ToolTip="Delete Milestone" Icon="Delete"
AllowDepress="true" EnableToggle="false" Width="25">
<Listeners>
<Click Handler="#{MilestonesGridStore}.remove(this.parentMenu.dataRecord)" />
</Listeners>
</ext:Button>
</Component>
</ext:ComponentColumn>
</Columns>
</ColumnModel>
<SelectionModel>
<ext:RowSelectionModel runat="server" Mode="Single">
<Listeners>
<Select Handler="#{DeleteMilestoneGridButton}.enable();" />
<Deselect Handler="if (!#{MilestonesGridPanel}.selModel.hasSelection()) {
#{DeleteMilestoneGridButton}.disable();
}" />
</Listeners>
</ext:RowSelectionModel>
</SelectionModel>
<Buttons>
<ext:Button ID="AddtoMilestoneGridButton" runat="server" Text="Insert" Icon="Add">
<Listeners>
<Click Handler="#{MilestonesGridStore}.insert(0, {}); #{MilestonesGridPanel}.editingPlugin.startEditByPosition({row:0, column:0});" />
</Listeners>
</ext:Button>
<ext:Button ID="DeleteMilestoneGridButton" runat="server" Text="Delete" Icon="Delete"
Disabled="true">
<Listeners>
<Click Handler="#{MilestonesGridPanel}.deleteSelected();
if (!#{MilestonesGridPanel}.hasSelection()) {
#{DeleteMilestoneGridButton}.disable();
}" />
</Listeners>
</ext:Button>
<ext:Button ID="RefreshMilestonesGridButton" runat="server" Text="RefresH" Icon="Reload">
<Listeners>
<Click Handler="#{MilestonesGridStore}.load();" />
</Listeners>
</ext:Button>
<ext:Button ID="SaveMilestoneGridButton" runat="server" Text="Save" Icon="Disk">
<Listeners>
<Click Handler="#{MilestonesGridStore}.sync();" />
</Listeners>
</ext:Button>
</Buttons>
</ext:GridPanel>

Resources