openerp-community-reviewer team mailing list archive
-
openerp-community-reviewer team
-
Mailing list archive
-
Message #03057
[Merge] lp:~serpentcs/web-addons/web_search_alphabetic into lp:web-addons
Serpent Consulting Services has proposed merging lp:~serpentcs/web-addons/web_search_alphabetic into lp:web-addons.
Requested reviews:
Web-Addons Core Editors (webaddons-core-editors)
For more details, see:
https://code.launchpad.net/~serpentcs/web-addons/web_search_alphabetic/+merge/202325
--
https://code.launchpad.net/~serpentcs/web-addons/web_search_alphabetic/+merge/202325
Your team Web-Addons Core Editors is requested to review the proposed merge of lp:~serpentcs/web-addons/web_search_alphabetic into lp:web-addons.
=== added directory 'web_search_alphabetic'
=== added file 'web_search_alphabetic/__init__.py'
--- web_search_alphabetic/__init__.py 1970-01-01 00:00:00 +0000
+++ web_search_alphabetic/__init__.py 2014-01-20 15:51:59 +0000
@@ -0,0 +1,23 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
+# Copyright (C) 2011-2014 Serpent Consulting Services (<http://www.serpentcs.com>)
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+############################################################################
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
=== added file 'web_search_alphabetic/__openerp__.py'
--- web_search_alphabetic/__openerp__.py 1970-01-01 00:00:00 +0000
+++ web_search_alphabetic/__openerp__.py 2014-01-20 15:51:59 +0000
@@ -0,0 +1,49 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
+# Copyright (C) 2011-2014 Serpent Consulting Services (<http://www.serpentcs.com>)
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+############################################################################
+
+{
+ 'name': 'Web Alphabetical Search',
+ 'author' : 'Serpent Consulting Services Pvt. Ltd.',
+ 'category' : 'Web',
+ 'website': 'http://www.serpentcs.com',
+ 'description': """
+OpenERP Web Search Extended.
+============================
+
+This module used for search record base on alphabetical character be default it will search on name field.
+User also is able to change search field name instead of name field.
+ """,
+ 'version': '1.0',
+ 'depends': ['web'],
+ 'js': [
+ 'static/src/js/web_search.js'
+ ],
+ 'css': [
+ 'static/src/css/web_search.css'
+ ],
+ 'qweb' : [
+ 'static/src/xml/web_search.xml',
+ ],
+ 'auto_install': False
+}
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
=== added directory 'web_search_alphabetic/static'
=== added directory 'web_search_alphabetic/static/src'
=== added directory 'web_search_alphabetic/static/src/css'
=== added file 'web_search_alphabetic/static/src/css/web_search.css'
--- web_search_alphabetic/static/src/css/web_search.css 1970-01-01 00:00:00 +0000
+++ web_search_alphabetic/static/src/css/web_search.css 2014-01-20 15:51:59 +0000
@@ -0,0 +1,44 @@
+.openerp .search_filter {
+ background: #F0F0F0;
+ width: 100%;
+ border: 1px solid #999;
+ background: -moz-linear-gradient(top, #F0F0F0 0%, #C0C0C0 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F0F0F0), color-stop(100%,#C0C0C0));
+}
+
+.openerp .oe_filter_label {
+ background: #F0F0F0;
+ width: 3.35%;
+ border: 1px solid #999;
+ background: -moz-linear-gradient(top, #F0F0F0 0%, #C0C0C0 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F0F0F0), color-stop(100%,#C0C0C0));
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F0F0F0', endColorstr='#C0C0C0',GradientType=0 );
+}
+.openerp .oe_filter_label:hover {
+ background: #F0F0F0;
+ background: -moz-linear-gradient(top, #F0F0F0 0%, #A1A7CE 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F0F0F0), color-stop(100%,#A1A7CE));
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F0F0F0', endColorstr='#A1A7CE',GradientType=0 );
+}
+.openerp .oe_filter_label:active {
+ background: #aaa;
+ background: -moz-linear-gradient(top, #999999 0%, #EEEEEE 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#999999), color-stop(100%,#EEEEEE));
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#999999', endColorstr='#EEEEEE',GradientType=0 );
+}
+.openerp .oe_filter_label.enabled {
+ background: #aaa;
+ filter: none;
+ -moz-box-shadow: none;
+ -webkit-box-shadow: none;
+ -o-box-shadow: none;
+ box-shadow: none;
+}
+.openerp .oe_filter_label {
+ font-weight: bold;
+ text-transform: uppercase;
+ text-shadow: #EEE 0 1px 0;
+ color: #4C4C4C;
+ white-space: nowrap;
+ margin: 0;
+}
\ No newline at end of file
=== added directory 'web_search_alphabetic/static/src/img'
=== added file 'web_search_alphabetic/static/src/img/icon.png'
Binary files web_search_alphabetic/static/src/img/icon.png 1970-01-01 00:00:00 +0000 and web_search_alphabetic/static/src/img/icon.png 2014-01-20 15:51:59 +0000 differ
=== added directory 'web_search_alphabetic/static/src/js'
=== added file 'web_search_alphabetic/static/src/js/web_search.js'
--- web_search_alphabetic/static/src/js/web_search.js 1970-01-01 00:00:00 +0000
+++ web_search_alphabetic/static/src/js/web_search.js 2014-01-20 15:51:59 +0000
@@ -0,0 +1,80 @@
+openerp.web_search_alphabetic = function (instance) {
+ var QWeb = instance.web.qweb;
+ instance.web.SearchView.include({
+ start: function() {
+ var result = this._super();
+ var self = this;
+ self.search_on = "name";
+ self.fields_selection = [];
+ this.dataset.call('fields_get', [false, {}]).done(function (fields) {
+ $.each(fields, function (value) {
+ if(fields[value].type == "char"){
+ fields[value].id = value;
+ self.fields_selection.push(fields[value]);
+ }
+ })
+ if(self.fields_selection.length){
+ $('.field_selection_column').append((QWeb.render('field-selection', {widget: self})));
+ $("#field_name_selection").change(function(){
+ self.search_on = $(this).val() || false;
+ })
+ }
+ });
+ $('.oe_filter_label').click(function (e) {
+ $(this).toggleClass('enabled');
+ self.do_search();
+ });
+ return result;
+ },
+ search_filter: function(){
+ var filter_domain = [];
+ var self = this;
+ _.each($('.oe_filter_label'), function(value) {
+ if ($(value).hasClass('enabled') && $(value).attr('id') && self.search_on) {
+ filter_domain.push("[('" + self.search_on + "', '=ilike', '" + $(value).attr('id').split('_')[1] + "%')]")
+ }
+ });
+ if (filter_domain.length) {
+ var filter_or_domain = [];
+ for (i = 0; i < filter_domain.length-1; i++) {
+ filter_or_domain.push("['|']");
+ }
+ return filter_or_domain.concat(filter_domain || []);
+ }
+ return false;
+ },
+ build_search_data: function () {
+ var result = this._super();
+ filter_domain = this.search_filter();
+ if (filter_domain)
+ result['domains'] = filter_domain.concat(result.domains || []);
+ return result;
+ },
+ });
+
+ instance.web.ViewManager.include({
+ switch_mode: function(view_type, no_store, view_options) {
+ var view = this.views[view_type];
+ var result = this._super(view_type, no_store, view_options);
+ if (this.searchview && this.active_view != "form") {
+ if ((view.controller.searchable === false || this.searchview.options.hidden) || this.active_view == "form"){
+ $('.search_filter').live().hide();
+ }else
+ $('.search_filter').show();
+ }
+ else{
+ $('.search_filter').live().hide();
+ }
+ return result;
+ },
+ });
+ instance.web.FormView.include({
+ load_defaults: function () {
+ if($('.search_filter'))
+ $('.search_filter').hide();
+ return this._super();
+ },
+ });
+};
+
+// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax:
=== added directory 'web_search_alphabetic/static/src/xml'
=== added file 'web_search_alphabetic/static/src/xml/web_search.xml'
--- web_search_alphabetic/static/src/xml/web_search.xml 1970-01-01 00:00:00 +0000
+++ web_search_alphabetic/static/src/xml/web_search.xml 2014-01-20 15:51:59 +0000
@@ -0,0 +1,49 @@
+<template>
+<t t-name="field-selection">
+ <t t-if="widget.fields_selection">
+ <select id="field_name_selection">
+ <t t-foreach="widget.fields_selection" t-as="record">
+ <option t-att-value="record.id"><t t-esc="record.string"/></option>
+ </t>
+ </select>
+ </t>
+</t>
+
+<t t-extend="ViewManagerAction">
+ <t t-jquery=".oe_view_manager .oe_view_manager_header" t-operation="append">
+ <table class="search_filter">
+ <tr>
+ <th class="field_selection_column"/>
+ <th>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_a" title="A">A</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_b" title="B">B</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_c" title="C">C</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_d" title="D">D</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_e" title="E">E</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_f" title="F">F</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_g" title="G">G</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_h" title="H">H</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_i" title="I">I</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_j" title="J">J</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_k" title="K">K</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_l" title="L">L</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_m" title="M">M</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_n" title="N">N</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_o" title="O">O</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_p" title="P">P</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_q" title="Q">Q</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_r" title="R">R</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_s" title="S">S</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_t" title="T">T</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_u" title="U">U</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_v" title="V">V</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_w" title="W">W</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_x" title="X">X</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_y" title="Y">Y</button>
+ <button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_z" title="Z">z</button>
+ </th>
+ </tr>
+ </table>
+ </t>
+</t>
+</template>
Follow ups