add filter based on entity types for profile builder
authorkurund <kurund@civicrm.org>
Fri, 24 Jan 2014 01:06:29 +0000 (17:06 -0800)
committerkurund <kurund@civicrm.org>
Fri, 24 Jan 2014 01:06:29 +0000 (17:06 -0800)
js/view/crm.designer.js
templates/CRM/UF/Page/ProfileTemplates.tpl

index 0098ca9b1e65201989765c0aaaf80a451a587ca6..fff8dacbd92ce521aca6679be5995ee4cb8dbecb 100644 (file)
     openTreeNodes: [],
     events: {
       'keyup .crm-designer-palette-search input': 'doSearch',
+      'change .crm-contact-types': 'doSetPaletteEntity',
       'click .crm-designer-palette-clear-search': 'clearSearch',
       'click .crm-designer-palette-toggle': 'toggleAll',
       'click .crm-designer-palette-add button': 'doNewCustomFieldDialog',
 
       paletteView.model.getRel('ufEntityCollection').each(function(ufEntityModel){
         _.each(ufEntityModel.getSections(), function(section, sectionKey){
+
+          // build filter select
+          if (sectionKey == 'default') {
+            paletteView.$('.crm-contact-types').append('<option value="' + ufEntityModel.get('entity_name') + '">' + section.title + '</option>');
+          }
+
+          if (!paletteView.selectedContactType) {
+            paletteView.selectedContactType = paletteView.$('.crm-contact-types option:first').val();
+          }
+          // set selected option as default, since we are rebuilding palette
+          paletteView.$('.crm-contact-types').val(paletteView.selectedContactType).prop('selected','selected');
+
+          if (paletteView.selectedContactType != ufEntityModel.get('entity_name')) {
+            return true;
+          }
+
           var entitySection = ufEntityModel.get('entity_name') + '-' + sectionKey;
           var items = [];
           if (paletteFieldsByEntitySection[entitySection]) {
     doSearch: function(event) {
       $('.crm-designer-palette-tree').jstree("search", $(event.target).val());
     },
+    doSetPaletteEntity: function(event) {
+      this.selectedContactType = $('.crm-contact-types :selected').val();
+      this.render();
+    },
     doAddToCanvas: function(event) {
       var paletteFieldModel = this.model.getRel('paletteFieldCollection').get($(event.currentTarget).attr('data-plm-cid'));
       paletteFieldModel.addToUFCollection(this.model.getRel('ufFieldCollection'));
index 32e9cc2bbc7cedd950abb2a4e6f1ae4ab17af886..0456c6148263203dda7662b2d6d7e634cd43d611 100644 (file)
 <script type="text/template" id="palette_template">
   <div class="crm-designer-palette">
     <div class="crm-designer-palette-search">
+      <div class="crm-filter-objects">
+        <span>{ts}Field Type{/ts}: <select class="crm-contact-types"></select></span>
+      </div>
+      <hr>
       <input type="text" placeholder="{ts}Search Fields{/ts}" />
       <a class="crm-designer-palette-clear-search" href="#" title="{ts}Clear search{/ts}"><img src="{$config->resourceBase}i/close.png" class="action-icon" alt="X" /></a>
       <div class="crm-designer-palette-controls">