Announcement

Collapse
No announcement yet.

Remove Set Held and Set Not Held from meeting modal

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Remove Set Held and Set Not Held from meeting modal

    Can anyone tell me how to remove Set Held and Set Not Held from meeting modal?
    Click image for larger version

Name:	image.png
Views:	165
Size:	23.2 KB
ID:	100883

    Thanks

  • #2


    look on doc, how make a custom handler for hide this action button
    never try but must work

    Crazy, many front-end specialist and no respond

    Comment


    • dnaoverride
      dnaoverride commented
      Editing a comment
      Thanks will try out

  • #3
    You can create a custom modal view for the meeting, copy the existing one and just remove the setHeld and setNotHeld methods, follow steps below:

    1 - create a file under custom\Espo\Custom\Resources\metadata\clientDefs\M eeting.json and paste the code below (if you have already the custom file just use the code for the view):

    PHP Code:
    {
        
    "modalViews": {
            
    "detail":"custom:views/meeting/modals/detail"
        
    }
    }
    ​ 

    2 - create the custom modal view under client\custom\custom\src\views\meeting\modals\deta il.js (create those folders if they don't exist), below the code:
    PHP Code:
    define('custom:views/meeting/modals/detail', ['views/modals/detail''lib!moment'],
        function (
    Depmoment) {

        return 
    Dep.extend({

            
    duplicateActiontrue,

            
    setupAfterModelCreated: function () {
                
    Dep.prototype.setupAfterModelCreated.call(this);

                
    let buttonData this.getAcceptanceButtonData();

                
    this.addButton({
                    
    name'setAcceptanceStatus',
                    
    htmlbuttonData.html,
                    
    hiddenthis.hasAcceptanceStatusButton(),
                    
    stylebuttonData.style,
                    
    className'btn-text',
                    
    pullLefttrue,
                }, 
    'cancel');


                
    this.addDropdownItem({
                    
    name'sendInvitations',
                    
    textthis.translate('Send Invitations''labels''Meeting'),
                    
    hidden: !this.isSendInvitationsToBeDisplayed(),
                });

                
    this.initAcceptanceStatus();

                
    this.on('switch-model', (modelpreviousModel) => {
                    
    this.stopListening(previousModel'sync');
                    
    this.initAcceptanceStatus();
                });

                
    this.on('after:save', () => {
                    if (
    this.hasAcceptanceStatusButton()) {
                        
    this.showAcceptanceButton();
                    } else {
                        
    this.hideAcceptanceButton();
                    }

                    if (
    this.isSendInvitationsToBeDisplayed()) {
                        
    this.showActionItem('sendInvitations');
                    } else {
                        
    this.hideActionItem('sendInvitations');
                    }
                });

                
    this.listenTo(this.model'sync', () => {
                    if (
    this.isSendInvitationsToBeDisplayed()) {
                        
    this.showActionItem('sendInvitations');

                        return;
                    }

                    
    this.hideActionItem('sendInvitations');
                });

                
    this.listenTo(this.model'after:save', () => {
                    if (
    this.isSendInvitationsToBeDisplayed()) {
                        
    this.showActionItem('sendInvitations');

                        return;
                    }

                    
    this.hideActionItem('sendInvitations');
                });
            },

            
    controlRecordButtonsVisibility: function () {
                
    Dep.prototype.controlRecordButtonsVisibility.call(this);
            },

            
    hasSetStatusButton: function () {

            },

            
    initAcceptanceStatus: function () {
                if (
    this.hasAcceptanceStatusButton()) {
                    
    this.showAcceptanceButton();
                } else {
                    
    this.hideAcceptanceButton();
                }

                
    this.listenTo(this.model'sync', () => {
                    if (
    this.hasAcceptanceStatusButton()) {
                        
    this.showAcceptanceButton();
                    } else {
                        
    this.hideAcceptanceButton();
                    }
                });
            },

            
    getAcceptanceButtonData: function () {
                
    let acceptanceStatus this.model.getLinkMultipleColumn('users''status'this.getUser().id);

                
    let text;
                
    let style 'default';

                
    let iconHtml null;

                if (
    acceptanceStatus && acceptanceStatus !== 'None') {
                    
    text this.getLanguage().translateOption(acceptanceStatus'acceptanceStatus'this.model.entityType);

                    
    style this.getMetadata()
                        .
    get(['entityDefs'this.model.entityType,
                            
    'fields''acceptanceStatus''style'acceptanceStatus]);

                    if (
    style) {
                        
    let iconClass = ({
                            
    'success''fas fa-check-circle',
                            
    'danger''fas fa-times-circle',
                            
    'warning''fas fa-question-circle',
                        })[
    style];

                        
    iconHtml = $('<span>')
                            .
    addClass(iconClass)
                            .
    addClass('text-' style)
                            .
    get(0).outerHTML;
                    }
                } else {
                    
    text typeof acceptanceStatus !== 'undefined' ?
                        
    this.translate('Acceptance''labels''Meeting') :
                        
    ' ';
                }

                
    let html this.getHelper().escapeString(text);

                if (
    iconHtml) {
                    
    html iconHtml ' ' html;
                }

                return {
                    
    stylestyle,
                    
    texttext,
                    
    htmlhtml,
                };
            },

            
    showAcceptanceButton: function () {
                
    this.showActionItem('setAcceptanceStatus');

                if (!
    this.isRendered()) {
                    
    this.once('after:render'this.showAcceptanceButtonthis);

                    return;
                }

                
    let data this.getAcceptanceButtonData();

                
    let $button this.$el.find('.modal-footer [data-name="setAcceptanceStatus"]');

                
    $button.html(data.html);

                
    $button.removeClass('btn-default');
                
    $button.removeClass('btn-success');
                
    $button.removeClass('btn-warning');
                
    $button.removeClass('btn-info');
                
    $button.removeClass('btn-primary');
                
    $button.removeClass('btn-danger');
                
    $button.addClass('btn-' data.style);
            },

            
    hideAcceptanceButton: function () {
                
    this.hideActionItem('setAcceptanceStatus');
            },

            
    hasAcceptanceStatusButton: function () {
                if (!
    this.model.has('status')) {
                    return 
    false;
                }

                if (!
    this.model.has('usersIds')) {
                    return 
    false;
                }

                if (~[
    'Held''Not Held'].indexOf(this.model.get('status'))) {
                    return 
    false;
                }

                if (!~
    this.model.getLinkMultipleIdList('users').indexOf(this.getUser().id)) {
                    return 
    false;
                }
                return 
    true;
            },

            
    actionSetAcceptanceStatus: function () {
                
    this.createView('dialog''crm:views/meeting/modals/acceptance-status', {
                    
    modelthis.model,
                }, (
    view) => {
                    
    view.render();

                    
    this.listenTo(view'set-status', (status) => {
                        
    this.hideAcceptanceButton();

                        
    Espo.Ajax.postRequest(this.model.entityType '/action/setAcceptanceStatus', {
                            
    idthis.model.id,
                            
    statusstatus,
                        }).
    then(() => {
                            
    this.model.fetch()
                                .
    then(() => {
                                    
    setTimeout(() => {
                                        
    this.$el.find(`button[data-name="setAcceptanceStatus"]`).focus();
                                    }, 
    50)
                                });
                        });
                    });
                });
            },

            
    isSendInvitationsToBeDisplayed: function () {
                if (~[
    'Held''Not Held'].indexOf(this.model.get('status'))) {
                    return 
    false;
                }

                
    let dateEnd this.model.get('dateEnd');

                if (
                    
    dateEnd &&
                    
    this.getDateTime().toMoment(dateEnd).isBefore(moment.now())
                ) {
                    return 
    false;
                }

                if (!
    this.getAcl().checkModel(this.model'edit')) {
                    return 
    false;
                }

                
    let userIdList this.model.getLinkMultipleIdList('users');
                
    let contactIdList this.model.getLinkMultipleIdList('contacts');
                
    let leadIdList this.model.getLinkMultipleIdList('leads');

                if (!
    contactIdList.length && !leadIdList.length && !userIdList.length) {
                    return 
    false;
                }

                return 
    true;
            },

            
    actionSendInvitations: function () {
                
    Espo.Ui.notify(' ... ');

                
    this.createView('dialog''crm:views/meeting/modals/send-invitations', {
                    
    modelthis.model,
                }).
    then(view => {
                    
    Espo.Ui.notify(false);

                    
    view.render();

                    
    this.listenToOnce(view'sent', () => this.model.fetch());
                });
            },
        });
    }); 

    After that just clear the cache and rebuild the system.

    I hope this helps

    Comment


    • #4
      Thanks rabii, beer on me.
      Modal actually have to be created in client\custom\src\views\meeting\modals not in client\custom\custom\src\views\meeting\modals figured it out and now it works like a charm.


      Following on that same principle apply to meeting record list?

      Click image for larger version

Name:	image.png
Views:	138
Size:	32.9 KB
ID:	100983
      ​​​​​​​Override default view from src folder in custom folder?

      Comment


      • #5
        You are welcome, correct follow same principle to override list. This is a safe upgrade way.

        Comment


        • #6
          Thank you Rabii, but what if I want to remove set held in another entity such as the one in opportunity > activity as in the picture below?

          Comment


          • rabii
            rabii commented
            Editing a comment
            You follow the same concept mentioned above. You would create a custom activity panel for the opportunity extend the existing views/opportunity/record/panels/activities and then define a custom rowActionsView which will not have setHeld and setNotHeld functions.

          • llen
            llen commented
            Editing a comment
            Thank you very much for your help. you're the best

          • rabii
            rabii commented
            Editing a comment
            you are welcome
        Working...
        X