Version Notes
* Abitity to easy autocomplete selection in filters of some grids
Download this release
Release Info
Developer | PotatoCommerce |
Extension | Potato_Gridautocomplete |
Version | 1.0.1 |
Comparing to | |
See all releases |
Version 1.0.1
- app/code/local/Potato/Gridautocomplete/Block/Adminhtml/Abstract.php +35 -0
- app/code/local/Potato/Gridautocomplete/Block/Adminhtml/Catalog/Product/Js.php +28 -0
- app/code/local/Potato/Gridautocomplete/Block/Adminhtml/Customer/Index/Js.php +49 -0
- app/code/local/Potato/Gridautocomplete/Block/Adminhtml/Sales/Creditmemo/Js.php +35 -0
- app/code/local/Potato/Gridautocomplete/Block/Adminhtml/Sales/Invoice/Js.php +35 -0
- app/code/local/Potato/Gridautocomplete/Block/Adminhtml/Sales/Order/Js.php +35 -0
- app/code/local/Potato/Gridautocomplete/Block/Adminhtml/Sales/Shipment/Js.php +35 -0
- app/code/local/Potato/Gridautocomplete/controllers/Adminhtml/IndexController.php +66 -0
- app/code/local/Potato/Gridautocomplete/etc/config.xml +19 -0
- app/design/adminhtml/default/default/layout/po_gridautocomplete.xml +63 -0
- app/design/adminhtml/default/default/template/potato_gridautocomplete/js.phtml +21 -0
- app/etc/modules/Potato_Gridautocomplete.xml +46 -0
- package.xml +35 -0
- skin/adminhtml/default/default/po_gridautocomplete/css/style.css +35 -0
- skin/adminhtml/default/default/po_gridautocomplete/js/autocomplete.js +76 -0
app/code/local/Potato/Gridautocomplete/Block/Adminhtml/Abstract.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
abstract class Potato_Gridautocomplete_Block_Adminhtml_Abstract extends Mage_Adminhtml_Block_Template
|
4 |
+
{
|
5 |
+
protected $_items = array();
|
6 |
+
|
7 |
+
abstract public function getJsGridObjectName();
|
8 |
+
|
9 |
+
public function getItems()
|
10 |
+
{
|
11 |
+
return $this->_items;
|
12 |
+
}
|
13 |
+
|
14 |
+
public function addItem($id, $block, $column, $targetElIds)
|
15 |
+
{
|
16 |
+
$item = new Varien_Object(
|
17 |
+
array(
|
18 |
+
'id' => Zend_Json::encode($id),
|
19 |
+
'target_el_ids' => Zend_Json::encode($targetElIds),
|
20 |
+
'url' => Zend_Json::encode(
|
21 |
+
$this->getUrl(
|
22 |
+
'po_gridautocomplete_admin/adminhtml_index/index',
|
23 |
+
array(
|
24 |
+
'block' => $block,
|
25 |
+
'column' => $column,
|
26 |
+
)
|
27 |
+
)
|
28 |
+
)
|
29 |
+
)
|
30 |
+
);
|
31 |
+
$this->_items[] = $item;
|
32 |
+
return $this;
|
33 |
+
}
|
34 |
+
|
35 |
+
}
|
app/code/local/Potato/Gridautocomplete/Block/Adminhtml/Catalog/Product/Js.php
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Potato_Gridautocomplete_Block_Adminhtml_Catalog_Product_Js extends Potato_Gridautocomplete_Block_Adminhtml_Abstract
|
4 |
+
{
|
5 |
+
protected function _toHtml()
|
6 |
+
{
|
7 |
+
$this->addItem(
|
8 |
+
'catalog_product_name', 'catalog_product', 'name',
|
9 |
+
array(
|
10 |
+
'productGrid_product_filter_name',
|
11 |
+
'product_filter_name',
|
12 |
+
)
|
13 |
+
);
|
14 |
+
$this->addItem(
|
15 |
+
'catalog_product_sku', 'catalog_product', 'sku',
|
16 |
+
array(
|
17 |
+
'productGrid_product_filter_sku',
|
18 |
+
'product_filter_sku',
|
19 |
+
)
|
20 |
+
);
|
21 |
+
return parent::_toHtml();
|
22 |
+
}
|
23 |
+
|
24 |
+
public function getJsGridObjectName()
|
25 |
+
{
|
26 |
+
return "productGridJsObject";
|
27 |
+
}
|
28 |
+
}
|
app/code/local/Potato/Gridautocomplete/Block/Adminhtml/Customer/Index/Js.php
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Potato_Gridautocomplete_Block_Adminhtml_Customer_Index_Js extends Potato_Gridautocomplete_Block_Adminhtml_Abstract
|
4 |
+
{
|
5 |
+
protected function _toHtml()
|
6 |
+
{
|
7 |
+
$this->addItem(
|
8 |
+
'customer_name', 'customer_index', 'name',
|
9 |
+
array(
|
10 |
+
'customerGrid_filter_name',
|
11 |
+
'filter_name',
|
12 |
+
)
|
13 |
+
);
|
14 |
+
$this->addItem(
|
15 |
+
'customer_email', 'customer_index', 'email',
|
16 |
+
array(
|
17 |
+
'customerGrid_filter_email',
|
18 |
+
'filter_email',
|
19 |
+
)
|
20 |
+
);
|
21 |
+
$this->addItem(
|
22 |
+
'customer_billing_telephone', 'customer_index', 'billing_telephone',
|
23 |
+
array(
|
24 |
+
'customerGrid_filter_Telephone',
|
25 |
+
'filter_Telephone',
|
26 |
+
)
|
27 |
+
);
|
28 |
+
$this->addItem(
|
29 |
+
'customer_billing_postcode', 'customer_index', 'billing_postcode',
|
30 |
+
array(
|
31 |
+
'customerGrid_filter_billing_postcode',
|
32 |
+
'filter_billing_postcode',
|
33 |
+
)
|
34 |
+
);
|
35 |
+
$this->addItem(
|
36 |
+
'customer_billing_region', 'customer_index', 'billing_region',
|
37 |
+
array(
|
38 |
+
'customerGrid_filter_billing_region',
|
39 |
+
'filter_billing_region',
|
40 |
+
)
|
41 |
+
);
|
42 |
+
return parent::_toHtml();
|
43 |
+
}
|
44 |
+
|
45 |
+
public function getJsGridObjectName()
|
46 |
+
{
|
47 |
+
return "customerGridJsObject";
|
48 |
+
}
|
49 |
+
}
|
app/code/local/Potato/Gridautocomplete/Block/Adminhtml/Sales/Creditmemo/Js.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Potato_Gridautocomplete_Block_Adminhtml_Sales_Creditmemo_Js extends Potato_Gridautocomplete_Block_Adminhtml_Abstract
|
4 |
+
{
|
5 |
+
protected function _toHtml()
|
6 |
+
{
|
7 |
+
$this->addItem(
|
8 |
+
'sales_creditmemo_increment_id', 'sales_creditmemo', 'increment_id',
|
9 |
+
array(
|
10 |
+
'sales_creditmemo_grid_filter_increment_id',
|
11 |
+
'filter_increment_id',
|
12 |
+
)
|
13 |
+
);
|
14 |
+
$this->addItem(
|
15 |
+
'sales_creditmemo_order_increment_id', 'sales_creditmemo', 'order_increment_id',
|
16 |
+
array(
|
17 |
+
'sales_creditmemo_grid_filter_order_increment_id',
|
18 |
+
'filter_order_increment_id',
|
19 |
+
)
|
20 |
+
);
|
21 |
+
$this->addItem(
|
22 |
+
'sales_creditmemo_billing_name', 'sales_creditmemo', 'billing_name',
|
23 |
+
array(
|
24 |
+
'sales_creditmemo_grid_filter_billing_name',
|
25 |
+
'filter_billing_name',
|
26 |
+
)
|
27 |
+
);
|
28 |
+
return parent::_toHtml();
|
29 |
+
}
|
30 |
+
|
31 |
+
public function getJsGridObjectName()
|
32 |
+
{
|
33 |
+
return "sales_creditmemo_gridJsObject";
|
34 |
+
}
|
35 |
+
}
|
app/code/local/Potato/Gridautocomplete/Block/Adminhtml/Sales/Invoice/Js.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Potato_Gridautocomplete_Block_Adminhtml_Sales_Invoice_Js extends Potato_Gridautocomplete_Block_Adminhtml_Abstract
|
4 |
+
{
|
5 |
+
protected function _toHtml()
|
6 |
+
{
|
7 |
+
$this->addItem(
|
8 |
+
'sales_invoice_increment_id', 'sales_invoice', 'increment_id',
|
9 |
+
array(
|
10 |
+
'sales_invoice_grid_filter_increment_id',
|
11 |
+
'filter_increment_id',
|
12 |
+
)
|
13 |
+
);
|
14 |
+
$this->addItem(
|
15 |
+
'sales_invoice_order_increment_id', 'sales_invoice', 'order_increment_id',
|
16 |
+
array(
|
17 |
+
'sales_invoice_grid_filter_order_increment_id',
|
18 |
+
'filter_order_increment_id',
|
19 |
+
)
|
20 |
+
);
|
21 |
+
$this->addItem(
|
22 |
+
'sales_invoice_billing_name', 'sales_invoice', 'billing_name',
|
23 |
+
array(
|
24 |
+
'sales_invoice_grid_filter_billing_name',
|
25 |
+
'filter_billing_name',
|
26 |
+
)
|
27 |
+
);
|
28 |
+
return parent::_toHtml();
|
29 |
+
}
|
30 |
+
|
31 |
+
public function getJsGridObjectName()
|
32 |
+
{
|
33 |
+
return "sales_invoice_gridJsObject";
|
34 |
+
}
|
35 |
+
}
|
app/code/local/Potato/Gridautocomplete/Block/Adminhtml/Sales/Order/Js.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Potato_Gridautocomplete_Block_Adminhtml_Sales_Order_Js extends Potato_Gridautocomplete_Block_Adminhtml_Abstract
|
4 |
+
{
|
5 |
+
protected function _toHtml()
|
6 |
+
{
|
7 |
+
$this->addItem(
|
8 |
+
'sales_order_increment_id', 'sales_order', 'increment_id',
|
9 |
+
array(
|
10 |
+
'sales_order_grid_filter_real_order_id',
|
11 |
+
'filter_real_order_id',
|
12 |
+
)
|
13 |
+
);
|
14 |
+
$this->addItem(
|
15 |
+
'sales_order_billing_name', 'sales_order', 'billing_name',
|
16 |
+
array(
|
17 |
+
'sales_order_grid_filter_billing_name',
|
18 |
+
'filter_billing_name',
|
19 |
+
)
|
20 |
+
);
|
21 |
+
$this->addItem(
|
22 |
+
'sales_order_shipping_name', 'sales_order', 'shipping_name',
|
23 |
+
array(
|
24 |
+
'sales_order_grid_filter_shipping_name',
|
25 |
+
'filter_shipping_name',
|
26 |
+
)
|
27 |
+
);
|
28 |
+
return parent::_toHtml();
|
29 |
+
}
|
30 |
+
|
31 |
+
public function getJsGridObjectName()
|
32 |
+
{
|
33 |
+
return "sales_order_gridJsObject";
|
34 |
+
}
|
35 |
+
}
|
app/code/local/Potato/Gridautocomplete/Block/Adminhtml/Sales/Shipment/Js.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Potato_Gridautocomplete_Block_Adminhtml_Sales_Shipment_Js extends Potato_Gridautocomplete_Block_Adminhtml_Abstract
|
4 |
+
{
|
5 |
+
protected function _toHtml()
|
6 |
+
{
|
7 |
+
$this->addItem(
|
8 |
+
'sales_shipment_increment_id', 'sales_shipment', 'increment_id',
|
9 |
+
array(
|
10 |
+
'sales_shipment_grid_filter_increment_id',
|
11 |
+
'filter_increment_id',
|
12 |
+
)
|
13 |
+
);
|
14 |
+
$this->addItem(
|
15 |
+
'sales_shipment_order_increment_id', 'sales_shipment', 'order_increment_id',
|
16 |
+
array(
|
17 |
+
'sales_shipment_grid_filter_order_increment_id',
|
18 |
+
'filter_order_increment_id',
|
19 |
+
)
|
20 |
+
);
|
21 |
+
$this->addItem(
|
22 |
+
'sales_shipment_shipping_name', 'sales_shipment', 'shipping_name',
|
23 |
+
array(
|
24 |
+
'sales_shipment_grid_filter_shipping_name',
|
25 |
+
'filter_shipping_name',
|
26 |
+
)
|
27 |
+
);
|
28 |
+
return parent::_toHtml();
|
29 |
+
}
|
30 |
+
|
31 |
+
public function getJsGridObjectName()
|
32 |
+
{
|
33 |
+
return "sales_shipment_gridJsObject";
|
34 |
+
}
|
35 |
+
}
|
app/code/local/Potato/Gridautocomplete/controllers/Adminhtml/IndexController.php
ADDED
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Potato_Gridautocomplete_Adminhtml_IndexController extends Mage_Adminhtml_Controller_Action
|
4 |
+
{
|
5 |
+
public function indexAction()
|
6 |
+
{
|
7 |
+
$block = $this->getRequest()->getParam('block', null);
|
8 |
+
$column = $this->getRequest()->getParam('column', null);
|
9 |
+
$search = $this->getRequest()->getParam('search', null);
|
10 |
+
if (in_array(null, array($block, $column, $search))) {
|
11 |
+
return;
|
12 |
+
}
|
13 |
+
$blockNameMap = array(
|
14 |
+
'catalog_product' => 'adminhtml/catalog_product_grid',
|
15 |
+
'customer_index' => 'adminhtml/customer_grid',
|
16 |
+
'sales_order' => 'adminhtml/sales_order_grid',
|
17 |
+
'sales_invoice' => 'adminhtml/sales_invoice_grid',
|
18 |
+
'sales_shipment' => 'adminhtml/sales_shipment_grid',
|
19 |
+
'sales_creditmemo' => 'adminhtml/sales_creditmemo_grid',
|
20 |
+
);
|
21 |
+
$data = array();
|
22 |
+
if (array_key_exists($block, $blockNameMap)) {
|
23 |
+
$data = $this->_getDataFromGrid($blockNameMap[$block], $column, $search);
|
24 |
+
}
|
25 |
+
$this->getResponse()->setBody(
|
26 |
+
$this->_render($data)
|
27 |
+
);
|
28 |
+
}
|
29 |
+
|
30 |
+
|
31 |
+
protected function _getDataFromGrid($blockName, $column, $search)
|
32 |
+
{
|
33 |
+
$layout = $this->getLayout();
|
34 |
+
|
35 |
+
$block = $layout->createBlock($blockName);
|
36 |
+
$block->toHtml();
|
37 |
+
$collection = $block->getCollection();
|
38 |
+
$collection->clear();
|
39 |
+
$collection->getSelect()->reset(Zend_Db_Select::WHERE);
|
40 |
+
$collection->getSelect()->reset(Zend_Db_Select::LIMIT_COUNT);
|
41 |
+
$collection->getSelect()->reset(Zend_Db_Select::LIMIT_OFFSET);
|
42 |
+
$collection->getSelect()->distinct();
|
43 |
+
$collection->addFieldToFilter($column, array('like' => '%' . $search . '%'));
|
44 |
+
$collection->setPage(null, 1000);
|
45 |
+
|
46 |
+
$data = $collection->getColumnValues($column);
|
47 |
+
$data = array_unique($data);
|
48 |
+
$data = array_slice($data, 0, 10);
|
49 |
+
return $data;
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* @param array $data
|
54 |
+
*
|
55 |
+
* @return string
|
56 |
+
*/
|
57 |
+
protected function _render($data)
|
58 |
+
{
|
59 |
+
$html = "<ul>";
|
60 |
+
foreach ($data as $item) {
|
61 |
+
$html .= "<li>" . $item . "</li>";
|
62 |
+
}
|
63 |
+
$html .= "</ul>";
|
64 |
+
return $html;
|
65 |
+
}
|
66 |
+
}
|
app/code/local/Potato/Gridautocomplete/etc/config.xml
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Potato_Gridautocomplete>
|
5 |
+
<version>1.0.0</version>
|
6 |
+
</Potato_Gridautocomplete>
|
7 |
+
</modules>
|
8 |
+
<admin>
|
9 |
+
<routers>
|
10 |
+
<po_gridautocomplete_admin>
|
11 |
+
<use>admin</use>
|
12 |
+
<args>
|
13 |
+
<module>Potato_Gridautocomplete</module>
|
14 |
+
<frontName>po_gridautocomplete_admin</frontName>
|
15 |
+
</args>
|
16 |
+
</po_gridautocomplete_admin>
|
17 |
+
</routers>
|
18 |
+
</admin>
|
19 |
+
</config>
|
app/design/adminhtml/default/default/layout/po_gridautocomplete.xml
ADDED
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<layout version="0.1.0">
|
3 |
+
<adminhtml_sales_order_index>
|
4 |
+
<reference name="head">
|
5 |
+
<action method="addItem"><type>skin_js</type><name>po_gridautocomplete/js/autocomplete.js</name></action>
|
6 |
+
<action method="addItem"><type>skin_css</type><name>po_gridautocomplete/css/style.css</name></action>
|
7 |
+
</reference>
|
8 |
+
<reference name="js">
|
9 |
+
<block type="po_gridautocomplete/adminhtml_sales_order_js" template="potato_gridautocomplete/js.phtml"
|
10 |
+
name="potato_gridautocomplete.sales.order.js" as="potato_gridautocomplete_sales_order_js"/>
|
11 |
+
</reference>
|
12 |
+
</adminhtml_sales_order_index>
|
13 |
+
<adminhtml_sales_invoice_index>
|
14 |
+
<reference name="head">
|
15 |
+
<action method="addItem"><type>skin_js</type><name>po_gridautocomplete/js/autocomplete.js</name></action>
|
16 |
+
<action method="addItem"><type>skin_css</type><name>po_gridautocomplete/css/style.css</name></action>
|
17 |
+
</reference>
|
18 |
+
<reference name="js">
|
19 |
+
<block type="po_gridautocomplete/adminhtml_sales_invoice_js" template="potato_gridautocomplete/js.phtml"
|
20 |
+
name="potato_gridautocomplete.sales.invoice.js" as="potato_gridautocomplete_sales_invoice_js"/>
|
21 |
+
</reference>
|
22 |
+
</adminhtml_sales_invoice_index>
|
23 |
+
<adminhtml_sales_shipment_index>
|
24 |
+
<reference name="head">
|
25 |
+
<action method="addItem"><type>skin_js</type><name>po_gridautocomplete/js/autocomplete.js</name></action>
|
26 |
+
<action method="addItem"><type>skin_css</type><name>po_gridautocomplete/css/style.css</name></action>
|
27 |
+
</reference>
|
28 |
+
<reference name="js">
|
29 |
+
<block type="po_gridautocomplete/adminhtml_sales_shipment_js" template="potato_gridautocomplete/js.phtml"
|
30 |
+
name="potato_gridautocomplete.sales.shipment.js" as="potato_gridautocomplete_sales_shipment_js"/>
|
31 |
+
</reference>
|
32 |
+
</adminhtml_sales_shipment_index>
|
33 |
+
<adminhtml_sales_creditmemo_index>
|
34 |
+
<reference name="head">
|
35 |
+
<action method="addItem"><type>skin_js</type><name>po_gridautocomplete/js/autocomplete.js</name></action>
|
36 |
+
<action method="addItem"><type>skin_css</type><name>po_gridautocomplete/css/style.css</name></action>
|
37 |
+
</reference>
|
38 |
+
<reference name="js">
|
39 |
+
<block type="po_gridautocomplete/adminhtml_sales_creditmemo_js" template="potato_gridautocomplete/js.phtml"
|
40 |
+
name="potato_gridautocomplete.sales.creditmemo.js" as="potato_gridautocomplete_sales_creditmemo_js"/>
|
41 |
+
</reference>
|
42 |
+
</adminhtml_sales_creditmemo_index>
|
43 |
+
<adminhtml_catalog_product_index>
|
44 |
+
<reference name="head">
|
45 |
+
<action method="addItem"><type>skin_js</type><name>po_gridautocomplete/js/autocomplete.js</name></action>
|
46 |
+
<action method="addItem"><type>skin_css</type><name>po_gridautocomplete/css/style.css</name></action>
|
47 |
+
</reference>
|
48 |
+
<reference name="js">
|
49 |
+
<block type="po_gridautocomplete/adminhtml_catalog_product_js" template="potato_gridautocomplete/js.phtml"
|
50 |
+
name="potato_gridautocomplete.catalog.product.js" as="potato_gridautocomplete_catalog_product_js"/>
|
51 |
+
</reference>
|
52 |
+
</adminhtml_catalog_product_index>
|
53 |
+
<adminhtml_customer_index>
|
54 |
+
<reference name="head">
|
55 |
+
<action method="addItem"><type>skin_js</type><name>po_gridautocomplete/js/autocomplete.js</name></action>
|
56 |
+
<action method="addItem"><type>skin_css</type><name>po_gridautocomplete/css/style.css</name></action>
|
57 |
+
</reference>
|
58 |
+
<reference name="js">
|
59 |
+
<block type="po_gridautocomplete/adminhtml_customer_index_js" template="potato_gridautocomplete/js.phtml"
|
60 |
+
name="potato_gridautocomplete.customer.index.js" as="potato_gridautocomplete_customer_index_js"/>
|
61 |
+
</reference>
|
62 |
+
</adminhtml_customer_index>
|
63 |
+
</layout>
|
app/design/adminhtml/default/default/template/potato_gridautocomplete/js.phtml
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<script type="text/javascript">
|
2 |
+
(function(){
|
3 |
+
<?php if (count($this->getItems()) > 0): ?>
|
4 |
+
var originalPreInitCallback = <?php echo $this->getJsGridObjectName();?>.preInitCallback;
|
5 |
+
<?php echo $this->getJsGridObjectName();?>.preInitCallback = function(){
|
6 |
+
originalPreInitCallback();
|
7 |
+
<?php foreach ($this->getItems() as $item):?>
|
8 |
+
new potatoGridAutocomplete(
|
9 |
+
<?php echo $item->getTargetElIds();?>,
|
10 |
+
"po-gridautocomplete-container-" + <?php echo $item->getId();?>,
|
11 |
+
<?php echo $item->getUrl();?>,
|
12 |
+
{}
|
13 |
+
);
|
14 |
+
<?php endforeach;?>
|
15 |
+
};
|
16 |
+
Event.observe(window, 'load', function(e){
|
17 |
+
<?php echo $this->getJsGridObjectName();?>.preInitCallback();
|
18 |
+
});
|
19 |
+
<?php endif;?>
|
20 |
+
})();
|
21 |
+
</script>
|
app/etc/modules/Potato_Gridautocomplete.xml
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Potato_Gridautocomplete>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>local</codePool>
|
7 |
+
</Potato_Gridautocomplete>
|
8 |
+
</modules>
|
9 |
+
<admin>
|
10 |
+
<routers>
|
11 |
+
<po_gridautocomplete_admin>
|
12 |
+
<use>admin</use>
|
13 |
+
<args>
|
14 |
+
<module>Potato_Gridautocomplete</module>
|
15 |
+
<frontName>po_gridautocomplete_admin</frontName>
|
16 |
+
</args>
|
17 |
+
</po_gridautocomplete_admin>
|
18 |
+
</routers>
|
19 |
+
</admin>
|
20 |
+
<adminhtml>
|
21 |
+
<layout>
|
22 |
+
<updates>
|
23 |
+
<po_gridautocomplete module="Potato_Gridautocomplete">
|
24 |
+
<file>po_gridautocomplete.xml</file>
|
25 |
+
</po_gridautocomplete>
|
26 |
+
</updates>
|
27 |
+
</layout>
|
28 |
+
</adminhtml>
|
29 |
+
<global>
|
30 |
+
<helpers>
|
31 |
+
<po_gridautocomplete>
|
32 |
+
<class>Potato_Gridautocomplete_Helper</class>
|
33 |
+
</po_gridautocomplete>
|
34 |
+
</helpers>
|
35 |
+
<blocks>
|
36 |
+
<po_gridautocomplete>
|
37 |
+
<class>Potato_Gridautocomplete_Block</class>
|
38 |
+
</po_gridautocomplete>
|
39 |
+
</blocks>
|
40 |
+
<models>
|
41 |
+
<po_gridautocomplete>
|
42 |
+
<class>Potato_Smsnotice_Model</class>
|
43 |
+
</po_gridautocomplete>
|
44 |
+
</models>
|
45 |
+
</global>
|
46 |
+
</config>
|
package.xml
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>Potato_Gridautocomplete</name>
|
4 |
+
<version>1.0.0</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends/>
|
9 |
+
<summary>Grid Autocomplete by PotatoCommerce
|
10 |
+
Module adds simple auto-complete in Magento grids.</summary>
|
11 |
+
<description>By default functionality works in these columns:
|
12 |
+

|
13 |
+
Backend > Sales > Orders
|
14 |
+
“Order ID”
|
15 |
+
“Bill To Name”
|
16 |
+
“Ship To Name”
|
17 |
+

|
18 |
+
Backend > Catalog > Manage Products
|
19 |
+
“Name”
|
20 |
+
“SKU”
|
21 |
+

|
22 |
+
Backend > Customers > Manage Customers
|
23 |
+
“Name”
|
24 |
+
“Email column”
|
25 |
+
“Telephone”
|
26 |
+
“ZIP”
|
27 |
+
“State/Province”</description>
|
28 |
+
<notes>* Abitity to easy autocomplete selection in filters of some grids</notes>
|
29 |
+
<authors><author><name>PotatoCommerce</name><user>potatocommerce</user><email>potatocommerce@gmail.com</email></author></authors>
|
30 |
+
<date>2014-03-17</date>
|
31 |
+
<time>19:25:33</time>
|
32 |
+
<contents><target name="magelocal"><dir name="Potato"><dir name="Gridautocomplete"><dir name="Block"><dir name="Adminhtml"><file name="Abstract.php" hash="dd2eaafefdef6ea55a5257609ef2d01c"/><dir name="Catalog"><dir name="Product"><file name="Js.php" hash="81436718a1bac52687f422b4d9386710"/></dir></dir><dir name="Customer"><dir name="Index"><file name="Js.php" hash="de559fcf02447af1b18fe690d6e93f10"/></dir></dir><dir name="Sales"><dir name="Creditmemo"><file name="Js.php" hash="77255bbf8230b6fb63f3ca2a556d2b34"/></dir><dir name="Invoice"><file name="Js.php" hash="f66bcb56e829a86454bfe1dea134d8cf"/></dir><dir name="Order"><file name="Js.php" hash="ae2213555b7ef029ff8caeab6cfe83e6"/></dir><dir name="Shipment"><file name="Js.php" hash="7d091a24af5e95a8115dd5f718569b42"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="IndexController.php" hash="5033e9a901e523646b7e7eac78de7d8f"/></dir></dir><dir name="etc"><file name="config.xml" hash="1d9c0e4667f8127ba7a9094da52118ea"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="potato_gridautocomplete"><file name="js.phtml" hash="529fc17392d3ef96f8382d75b7baac2a"/></dir></dir><dir name="layout"><file name="po_gridautocomplete.xml" hash="0ab49de41c697c4427cb8d2890c2a2ff"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Potato_Gridautocomplete.xml" hash="2b61654e75e4116a94f74ca81110bd3d"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="po_gridautocomplete"><dir name="css"><file name="style.css" hash="9ed6a6f4d41b0720996b5472be65df8c"/></dir><dir name="js"><file name="autocomplete.js" hash="1bb1320dec6265e8fe0675085cfa831e"/></dir></dir></dir></dir></dir></target></contents>
|
33 |
+
<compatible/>
|
34 |
+
<dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
|
35 |
+
</package>
|
skin/adminhtml/default/default/po_gridautocomplete/css/style.css
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
div.po-autocomplete-container {
|
2 |
+
margin:0;
|
3 |
+
padding:0;
|
4 |
+
width:250px;
|
5 |
+
background:#fff;
|
6 |
+
border: 1px solid #ddd;
|
7 |
+
border-top: 0;
|
8 |
+
position:absolute;
|
9 |
+
}
|
10 |
+
|
11 |
+
div.po-autocomplete-container ul {
|
12 |
+
margin:0;
|
13 |
+
padding:0;
|
14 |
+
list-style-type:none;
|
15 |
+
}
|
16 |
+
|
17 |
+
div.po-autocomplete-container ul li{
|
18 |
+
margin: 0;
|
19 |
+
padding: 2px;
|
20 |
+
height: 20px;
|
21 |
+
display: block;
|
22 |
+
list-style-type: none;
|
23 |
+
cursor: pointer;
|
24 |
+
padding-top: 7px;
|
25 |
+
background-color: #C3D9EB;
|
26 |
+
color: #333;
|
27 |
+
font-size: 14px;
|
28 |
+
}
|
29 |
+
div.po-autocomplete-container ul li:nth-child(even){
|
30 |
+
background-color: #A9CDEB;
|
31 |
+
}
|
32 |
+
div.po-autocomplete-container ul li.selected{
|
33 |
+
background-color:#95C2E8;
|
34 |
+
font-weight: bold;
|
35 |
+
}
|
skin/adminhtml/default/default/po_gridautocomplete/js/autocomplete.js
ADDED
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var potatoGridAutocomplete = Class.create(Ajax.Autocompleter, {
|
2 |
+
initialize: function(elementIds, update, url, options) {
|
3 |
+
var element = null;
|
4 |
+
elementIds.each(function(elId){
|
5 |
+
if ($(elId)) {
|
6 |
+
element = $(elId);
|
7 |
+
}
|
8 |
+
});
|
9 |
+
element.up().setStyle({
|
10 |
+
border: '1px solid orange'
|
11 |
+
});
|
12 |
+
this.autocompleteContainer = new Element('div', {
|
13 |
+
'class' : 'po-autocomplete-container',
|
14 |
+
'id' : update,
|
15 |
+
'style': 'display:none'
|
16 |
+
});
|
17 |
+
$$('body').first().appendChild(this.autocompleteContainer);
|
18 |
+
options.onShow = options.onShow ||
|
19 |
+
function(element, update){
|
20 |
+
if(!update.style.position || update.style.position=='absolute') {
|
21 |
+
update.style.position = 'absolute';
|
22 |
+
Position.clone(element, update, {
|
23 |
+
setHeight: false,
|
24 |
+
offsetTop: element.offsetHeight
|
25 |
+
});
|
26 |
+
}
|
27 |
+
Effect.Appear(update, {
|
28 |
+
duration:0.05,
|
29 |
+
afterFinish: function(){
|
30 |
+
update.setStyle({'min-width': update.getStyle('width')});
|
31 |
+
update.setStyle({'width': 'auto'});
|
32 |
+
}
|
33 |
+
});
|
34 |
+
};
|
35 |
+
options.paramName = options.paramName || 'search';
|
36 |
+
options.frequency = options.frequency || 0.5;
|
37 |
+
options.minChars = options.minChars || 3;
|
38 |
+
|
39 |
+
|
40 |
+
this.baseInitialize(element, update, options);
|
41 |
+
this.options.asynchronous = true;
|
42 |
+
this.options.onComplete = this.onComplete.bind(this);
|
43 |
+
this.options.defaultParams = this.options.parameters || null;
|
44 |
+
this.url = url;
|
45 |
+
},
|
46 |
+
|
47 |
+
updateChoices: function(choices) {
|
48 |
+
if(!this.changed && this.hasFocus) {
|
49 |
+
this.update.innerHTML = choices;
|
50 |
+
Element.cleanWhitespace(this.update);
|
51 |
+
Element.cleanWhitespace(this.update.down());
|
52 |
+
|
53 |
+
if(this.update.firstChild && this.update.down().childNodes) {
|
54 |
+
this.entryCount =
|
55 |
+
this.update.down().childNodes.length;
|
56 |
+
for (var i = 0; i < this.entryCount; i++) {
|
57 |
+
var entry = this.getEntry(i);
|
58 |
+
entry.autocompleteIndex = i;
|
59 |
+
this.addObservers(entry);
|
60 |
+
}
|
61 |
+
} else {
|
62 |
+
this.entryCount = 0;
|
63 |
+
}
|
64 |
+
|
65 |
+
this.stopIndicator();
|
66 |
+
this.index = -1;
|
67 |
+
|
68 |
+
if(this.entryCount==1 && this.options.autoSelect) {
|
69 |
+
this.selectEntry();
|
70 |
+
this.hide();
|
71 |
+
} else {
|
72 |
+
this.render();
|
73 |
+
}
|
74 |
+
}
|
75 |
+
}
|
76 |
+
});
|