File manager - Edit - /usr/local/cpanel/whostmgr/docroot/templates/gsw/features_showcase.tmpl
Back
[% INCLUDE gsw/header.tmpl %] [% USE Whostmgr; %] <script type="text/javascript" src="[% MagicRevision('/yui/cookie/cookie-min.js') %]"></script> <div id="content"> <div class="showcaseFeatures"> <form id="showcaseFeaturesForm" action="feature_showcase_do" method="POST"> <h1 id="newFeaturesTitle">[% locale.maketext("Feature Showcase") %]</h1> <div class="whatsNew"> <p> [% locale.maketext("The system added new features during this [asis,cPanel amp() WHM] upgrade. You can enable some of these features directly in this interface.") %] [% locale.maketext("Select “[_1]” next to the features that you wish to use and, then click “[_2]” at the bottom of the interface.", locale.maketext('Enable'), locale.maketext('Save Settings')) %] </p> </div> [% IF data.feature_collection.0.size -%] <div id="spotlightFeatures" class="releaseTypeContainer"> <div class="spotlightFeatureContainer"> <div class="recommendedFeatureTitle spotlightFeatureTitle"> <h2>[% locale.maketext("Feature Spotlight") %]</h2> </div> [% FOREACH feature IN data.feature_collection.0 -%] <div id="[% feature.driver -%]" class="feature spotlight[% IF !loop.next.spotlight_feature -%] last[% END -%]"> <fieldset> <div class="titleContainer"> <h3>[% feature.name -%]</h3> [% IF feature.helpurl -%] <div class="featureUrl"> <a href="[% feature.helpurl -%]" target="_blank">[% locale.maketext("More Information") %]</a> </div> [% END -%] </div> [% IF feature.forced || feature.readonly %] <div class="featureBlurbNoFields"> [% ELSE %] <div class="featureBlurb"> [% END %] <p>[% feature.blurb_html -%]</p> </div> [% IF !feature.forced && !feature.readonly %] <div class="fields"> <div class="inputContainer"> <label class="fancyRadio checked enable" title="[% locale.maketext('Enable') %]"> <!-- pre-select 'Enabled' for recommended features --> <input id="[% feature.driver -%]_enable" type="radio" name="[% feature.driver -%]" value="enabled" checked="checked"/> <span class="fancyText">[% locale.maketext("Enable") %]</span> </label> <label class="unchecked" title="[% locale.maketext('No, thank you') %]"> <input id="[% feature.driver -%]_disable" type="radio" name="[% feature.driver -%]" value="disabled" /> <span class="noThanksText">[% locale.maketext("No, thank you") %]</span> </label> </div> </div> [% END %] </fieldset> </div> [% END -%] </div> </div> [% END -%] [% IF data.feature_collection.1.size -%] <div id="newRecommended" class="releaseTypeContainer"> <div class="recommendedFeatureContainer"> <div class="recommendedFeatureTitle"> <h2>[% locale.maketext("Recommended [numerate,_1,Feature,Features]", data.feature_collection.1.size) %]</h2> </div> [% FOREACH feature IN data.feature_collection.1 -%] <div id="[% feature.driver -%]" class="feature recommended [% IF !loop.next.recommended -%]last[% END -%]"> <fieldset> <div class="titleContainer"> <h3>[% feature.name -%]</h3> [% IF feature.helpurl -%] <div class="featureUrl"> <a href="[% feature.helpurl -%]" target="_blank">[% locale.maketext("More Information") %]</a> </div> [% END -%] </div> [% IF feature.forced || feature.readonly %] <div class="featureBlurbNoFields"> [% ELSE %] <div class="featureBlurb"> [% END %] <p>[% feature.blurb_html -%]</p> </div> [% IF !feature.forced && !feature.readonly %] <div class="fields"> <div class="inputContainer"> <label class="fancyRadio checked enable" title="[% locale.maketext('Enable') %]"> <!-- pre-select 'Enabled' for recommended features --> <input id="[% feature.driver -%]_enable" type="radio" name="[% feature.driver -%]" value="enabled" checked="checked"/> <span class="fancyText">[% locale.maketext("Enable") %]</span> </label> <label class="unchecked" title="[% locale.maketext('No, thank you') %]"> <input id="[% feature.driver -%]_disable" type="radio" name="[% feature.driver -%]" value="disabled" /> <span class="noThanksText">[% locale.maketext("No, thank you") %]</span> </label> </div> </div> [% END %] </fieldset> </div> [% END -%] </div> </div> [% END -%] [% IF data.feature_collection.2.size -%] <h2>[% locale.maketext("New [numerate,_1,Feature,Features]", data.feature_collection.2.size) %]</h2> <div id="newGeneral" class="releaseTypeContainer"> <div class="generalFeatureContainer"> [% FOREACH feature IN data.feature_collection.2 -%] <div id="[% feature.driver -%]" class="feature general [% IF !data.feature_collection.0.size -%]generalOnly[% END -%]"> <fieldset> <div class="titleContainer"> <h3>[% feature.name -%]</h3> [% IF feature.helpurl -%] <div class="featureUrl"> <a href="[% feature.helpurl -%]" target="_blank">[% locale.maketext("More Information") %]</a> </div> [% END -%] </div> [% IF feature.forced || feature.readonly %] <div class="featureBlurbNoFields"> [% ELSE %] <div class="featureBlurb"> [% END %] <p>[% feature.blurb_html -%]</p> </div> [% IF !feature.forced && !feature.readonly %] <div class="fields"> <div class="inputContainer"> <label class="[% IF feature.defaultvalue -%]checked[% ELSE -%]unchecked[% END -%] enable" title="[% locale.maketext('Enable') %]"> <input id="[% feature.driver -%]_enable" type="radio" name="[% feature.driver -%]" value="enabled" [% IF feature.defaultvalue -%] checked="checked"[% END -%]/> <span class="radioText">[% locale.maketext("Enable") %]</span> </label> <label class="[% IF !feature.defaultvalue -%]checked[% ELSE -%]unchecked[% END -%]" title="[% locale.maketext('No, thank you') %]"> <input id="[% feature.driver -%]_disable" type="radio" name="[% feature.driver -%]" value="disabled" [% IF ! feature.defaultvalue -%] checked="checked"[% END -%]> <span class="noThanksText">[% locale.maketext("No, thank you") %]</span> </label> </div> </div> [% END %] </fieldset> </div> [% END -%] </div> </div> [% END -%] [% IF data.feature_collection.3.size -%] <h2 id="additionalFeaturesTitle">[% locale.maketext("Previously Configured [numerate,_1,Feature,Features]", data.feature_collection.3.size) %]</h2> <div id="modified" class="releaseTypeContainer"> [% FOREACH feature IN data.feature_collection.3 -%] <div id="[% feature.driver -%]" class="feature [% IF feature.recommended -%] recommended [% ELSIF feature.spotlight_feature -%] spotlight [% ELSE -%] general [% END -%]"> <fieldset> <div class="titleContainer"> <h3>[% feature.name -%]</h3> [% IF feature.helpurl -%] <div class="featureUrl"> <a href="[% feature.helpurl -%]" target="_blank">[% locale.maketext("More Information") %]</a> </div> [% END -%] </div> [% IF feature.forced || feature.readonly %] <div class="featureBlurbNoFields"> [% ELSE %] <div class="featureBlurb"> [% END %] <p>[% feature.blurb -%]</p> </div> [% IF !feature.forced && !feature.readonly %] <div class="fields"> <div class="inputContainer"> <label class="[% IF feature.defaultvalue -%]checked[% ELSE -%]unchecked[% END -%] enable" title="[% locale.maketext('Enable') %]"> <input id="[% feature.driver -%]_enable" type="radio" name="[% feature.driver -%]" value="enabled" [% IF feature.defaultvalue -%] checked="checked"[% END -%]/> <span class="radioText">[% locale.maketext("Enable") %]</span> <span class="currentState hide">([% locale.maketext("current state") %])</span> </label> <label class="[% IF !feature.defaultvalue -%]checked[% ELSE -%]unchecked[% END -%]" title="[% locale.maketext('Disable') %]"> <input id="[% feature.driver -%]_disable" type="radio" name="[% feature.driver -%]" value="disabled" [% IF ! feature.defaultvalue -%] checked="checked"[% END -%]/> <span class="radioText">[% locale.maketext("Disable") %]</span> <span class="currentState hide">([% locale.maketext("current state") %])</span> </label> </div> </div> [% END %] </fieldset> </div> [% END -%] </div> [% END -%] <div id="controls" class="featureControls"> <input type="hidden" name="continue"/> <a id="cancel" class="cancel" href="javascript:void(0);" title="[% locale.maketext('Exit to WHM') %]">[% locale.maketext('Exit to WHM')%]</a> <button type="submit" id="submitShowcaseFeatures" name="submitShowcase" title="[% locale.maketext('Save Settings') %]" class="btn-primary" >[% locale.maketext('Save Settings') %]</button> </div> </form> </div><!-- End main --> <div id="confirmationModal" class="modalPopup" style="visibility: hidden;"> <div class="hd"> <h1>[% locale.maketext("Updated Features Summary") %]</h1> </div> <div class="bd"> <div class="confirmationLoader"> </div> <ul id="featureStates" class="summaryList"></ul> </div> <div class="ft"> <p><i>[% locale.maketext("This window will close automatically.") %]</i></p> </div> </div> <div id="exitModal" class="modalPopup" style="visibility: hidden;"> <div class="hd"> <h1>[% locale.maketext("No Features Were Updated") %]</h1> <a id="exitModalClose" class="close" href="javascript:void(0);" title="[% locale.maketext('Close') %]">[% locale.maketext('Close')%]</a> </div> <div class="bd"> <p>[% locale.maketext("The Feature Showcase will appear again at the next WHM login.") %]</p> </div> <div class="ft"> <p><i>[% locale.maketext("This window will close automatically.") %]</i></p> </div> </div> </div><!-- End content --> <script type="text/javascript"> var featureForm = DOM.get('showcaseFeaturesForm'); var inputs = featureForm.getElementsByTagName('input'); //Stripe the features var featureContainers = ['spotlightFeatures', 'newRecommended', 'newGeneral', 'modified'];//id's var stripeFeatures = function() { for (var i = 0; i < featureContainers.length; i++) { var features = YAHOO.util.Selector.query('.feature', featureContainers[i]) for (var k = 1, len = features.length; k < len; k+=2) { DOM.addClass(features[k], 'even'); } } return true; } stripeFeatures(); //We want to keep the expected state of our radio buttons //Some browsers will keep the changed radio button state on refresh DOM.batch(inputs, function() { if (this.type == 'radio' && this.getAttribute('checked') == 'checked' ) { this.checked = true; var parentLabel = DOM.getAncestorByTagName(this, 'label'); if(parentLabel){ var currStateElArray = DOM.getChildrenBy( parentLabel, function(el){ return DOM.hasClass(el, 'currentState'); }); if(currStateElArray && currStateElArray.length>0){ var currStateEl = currStateElArray[0]; DOM.setStyle(currStateEl, 'display', 'inline-block'); } } } }); //Label state toggles for radio buttons function toggleLabelState() { var inputParent = this.parentNode; if (DOM.hasClass(inputParent, 'unchecked')) { DOM.replaceClass(inputParent, 'unchecked', 'checked'); var sibling = (DOM.getPreviousSibling(inputParent) != null ) ? DOM.getPreviousSibling(inputParent) : DOM.getNextSibling(inputParent); DOM.replaceClass(sibling, 'checked', 'unchecked'); if (DOM.hasClass(sibling, 'fancyRadio')) { //make sure that the other action is unchecked this.checked = true; DOM.getFirstChild(sibling).checked = false; } } else { return false; } } //get the current feature state //takes a node object var getFeatureState = function(feature) { var checkedInput = DOM.getElementsByClassName('checked', 'label', feature); if(checkedInput !== null && checkedInput.length !== 0) { if (DOM.hasClass(checkedInput, 'enable')[0]) { return "Enabled"; } else { return "Disabled"; } } return null; } //Build the list of features and their states from form values. var buildConfirmationData = function() { var featureList = DOM.get('featureStates'); var features = YAHOO.util.Selector.query('.feature.general, .feature.recommended, .feature.spotlight'); DOM.batch(features, function() { var featureTitle = YAHOO.util.Selector.query('.titleContainer h3', this, true).innerHTML; var li = document.createElement('li'); var span = document.createElement('span'); DOM.addClass(span, 'status'); var title = document.createElement('span'); title.innerHTML = featureTitle; var state = document.createElement('span'); if(getFeatureState(this) !== null) { if (getFeatureState(this) === "Enabled") { DOM.addClass(span, 'enabled'); state.innerHTML = "[% locale.maketext('Saved') %]"; } else { DOM.addClass(span, 'disabled'); state.innerHTML = "[% locale.maketext('Saved') %]"; } } else { // Assuming its a forced feature DOM.addClass(span, 'enabled'); state.innerHTML = "[% locale.maketext('Saved') %]"; } span.appendChild(state); li.appendChild(title); li.appendChild(span); featureList.appendChild(li); }); //Stripe the list items. var listChildren = DOM.getChildren(featureList); for (var i = 0; i < listChildren.length; i++) { if (i % 2) { DOM.addClass(listChildren[i], 'even'); } } } // Send mixpanel tracking data const sendMixpanelEvents = () => { const form = document.getElementById('showcaseFeaturesForm'); // disable hidden inputs to not interfere with actual features const hiddenInputs = form.querySelectorAll('input[type="hidden"]'); hiddenInputs?.forEach(input => input.disabled = true); // get the form data const formData = new FormData(form); // send mixpanel events for (let [name, value] of formData?.entries()) { const driverName = getFeatureDriverName(name); if (!driverName) return; window["mixpanel"]?.track("WHM-FeatureShowcase-submit", { "driver-name": driverName, "option-name": name, "option-value": value, }); } // re-enable hidden inputs to cleanup hiddenInputs?.forEach(input => input.disabled = false); } // find the feature driver name to pass to the mixpanel event const getFeatureDriverName = (inputName) => { let element = document.getElementsByName(inputName)[0]; while (element && element !== document.body) { // traverse up until you hit the document body if (element.tagName === "DIV" && element.classList.contains("feature")) { return element.id; // found the ".feature" div } element = element.parentElement; } return null; } //Confirmation modal var confirmation = new YAHOO.widget.Panel("confirmationModal", { fixedcenter: true, close: false, draggable: false, modal: true, width: '600px', visible: false }); confirmation.render(); var showConfirmationModal = function(e) { EVENT.preventDefault(e); buildConfirmationData(); sendMixpanelEvents(); confirmation.show(); window.setTimeout(function(){ featureForm['continue'].value = "[% locale.maketext('Save Settings') %]"; featureForm.submit(); }, 3000, true); } //Confirmation modal var exitModalPopup = new YAHOO.widget.Panel("exitModal", { fixedcenter: true, close: false, draggable: false, modal: true, width: '600px', visible: false }); exitModalPopup.render(); var showExitModal = function(e) { EVENT.preventDefault(e); exitModalPopup.show(); setFeatureShowcaseCookie(); window.setTimeout(function(){ exitToWHM(); }, 3000, true); } //Load event listeners EVENT.on(inputs, 'click', toggleLabelState); EVENT.on(featureForm, 'submit', showConfirmationModal); EVENT.on('cancel', 'click', showExitModal); EVENT.on('exitModalClose', 'click', function(e) { EVENT.preventDefault(e); exitToWHM(e); }); /** * isSet: This variable allows to set FeatureShowcase Cookie only once. We need this since * 'setFeatureShowcaseCookie' method is triggered by timeout handler in 'showExitModal' and close link click * handler */ var isSet=0; var exitToWHM = function(e){ if(!isSet){ setFeatureShowcaseCookie(); window.location = "[% cp_security_token %]/?gswdone=1"; isSet=1; } } function setFeatureShowcaseCookie(){ YAHOO.util.Cookie.set("whostmgr_feature_showcase_[% data.loggedin_user %]", "[% data.whmversion %]", { path:"/" }); } </script> [% INCLUDE gsw/gsw_step_end.tmpl %] [% INCLUDE gsw/footer.tmpl %]
| ver. 1.4 |
Github
|
.
| PHP 8.1.34 | Generation time: 0.04 |
proxy
|
phpinfo
|
Settings