Skip to content

Commit

Permalink
Merge pull request #101 from onurmenal/PP-99
Browse files Browse the repository at this point in the history
Pp 99
  • Loading branch information
onurmenal authored Apr 13, 2020
2 parents 674737b + 9446223 commit 474073b
Show file tree
Hide file tree
Showing 8 changed files with 106 additions and 56 deletions.
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "crm-power-pane",
"version": "1.2.1",
"version": "1.2.2",
"description": "Dynamics 365 Power Pane is a helper tool designed to integrate with Dynamics CRM/365 application and allow you to manipulate forms.",
"main": "index.js",
"scripts": {
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/img/action-icons/go-to-create-form.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
62 changes: 31 additions & 31 deletions src/html/ui/pane.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,48 +3,48 @@
<div class="crm-power-pane-scrolling-container">
<ul class="crm-power-pane-section" id="user-actions">
<li class="crm-power-pane-header">General</li>
<li class="crm-power-pane-subgroup" id="solutions" style="display:none!important"><span><span class="icon solutions-icon"></span>Solutions</span></li>
<li class="crm-power-pane-subgroup" id="user-info"><span><span class="icon user-info-icon"></span>User Info</span>
<li class="crm-power-pane-subgroup" id="fetch-xml"><span><span class="icon fetch-xml-icon"></span>Execute Fetch Xml</span></li>

</ul>
<ul class="crm-power-pane-section" id="record-actions">
<li class="crm-power-pane-header">Record Actions</li>

<li class="crm-power-pane-subgroup" id="entity-name"><span><span class="icon entity-name-icon"></span>Entity Info</span></li>
<li class="crm-power-pane-subgroup" id="record-id"><span><span class="icon record-id-icon"></span>Record Id</span></li>
<li class="crm-power-pane-subgroup" id="record-url"><span><span class="icon record-url-icon"></span>Record Url</span></li>
<li class="crm-power-pane-subgroup" id="clone-record"><span><span class="icon clone-record"></span>Clone Record</span></li>
<li class="crm-power-pane-subgroup" id="record-properties"><span><span class="icon record-properties-icon"></span>Record Properties</span></li>
<li class="crm-power-pane-header">Record Actions</li>
<li class="crm-power-pane-subgroup" id="entity-name"><span><span class="icon entity-name-icon"></span>Entity Info</span></li>
<li class="crm-power-pane-subgroup" id="record-id"><span><span class="icon record-id-icon"></span>Record Id</span></li>
<li class="crm-power-pane-subgroup" id="record-url"><span><span class="icon record-url-icon"></span>Record Url</span></li>
<li class="crm-power-pane-subgroup" id="clone-record"><span><span class="icon clone-record"></span>Clone Record</span></li>
<li class="crm-power-pane-subgroup" id="record-properties"><span><span class="icon record-properties-icon"></span>Record Properties</span></li>
</ul>
<ul class="crm-power-pane-section" id="form-actions" style="margin-right:10px!important">
<li class="crm-power-pane-header">Form Actions</li>
<li class="crm-power-pane-subgroup" id="enable-all-fields"><span><span class="icon enable-all-fields-icon"></span>Enable All Fields</span></li>
<li class="crm-power-pane-subgroup" id="show-all-fields"><span><span class="icon show-all-fields-icon"></span>Show Hidden Fields</span></li>
<li class="crm-power-pane-subgroup" id="disable-field-requirement"><span><span class="icon disable-field-requirement-icon"></span>Disable Field Requirement</span></li>
<li class="crm-power-pane-subgroup" id="schema-names"><span><span class="icon schema-names-icon"></span>Schema Names as Label</span></li>
<li class="crm-power-pane-subgroup" id="schema-names-as-desc"><span><span class="icon schema-names-as-desc-icon"></span>Schema Name Copy Mode</span></li>
<li class="crm-power-pane-subgroup" id="schema-names-in-brackets"><span><span class="icon schema-names-in-brackets-icon"></span>Schema Names In Brackets</span></li>
<li class="crm-power-pane-subgroup" id="show-optionset-values"><span><span class="icon show-optionset-values-icon"></span>Show Optionset Values</span></li>
<li class="crm-power-pane-header">Form Actions</li>
<li class="crm-power-pane-subgroup" id="enable-all-fields"><span><span class="icon enable-all-fields-icon"></span>Enable All Fields</span></li>
<li class="crm-power-pane-subgroup" id="show-all-fields"><span><span class="icon show-all-fields-icon"></span>Show Hidden Fields</span></li>
<li class="crm-power-pane-subgroup" id="disable-field-requirement"><span><span class="icon disable-field-requirement-icon"></span>Disable Field Requirement</span></li>
<li class="crm-power-pane-subgroup" id="schema-names"><span><span class="icon schema-names-icon"></span>Schema Names as Label</span></li>
<li class="crm-power-pane-subgroup" id="schema-names-as-desc"><span><span class="icon schema-names-as-desc-icon"></span>Schema Name Copy Mode</span></li>
<li class="crm-power-pane-subgroup" id="schema-names-in-brackets"><span><span class="icon schema-names-in-brackets-icon"></span>Schema Names In Brackets</span></li>
<li class="crm-power-pane-subgroup" id="show-optionset-values"><span><span class="icon show-optionset-values-icon"></span>Show Optionset Values</span></li>
</ul>
<ul class="crm-power-pane-section" style="">
<li class="crm-power-pane-header"> </li>
<li class="crm-power-pane-subgroup" id="show-field-value"><span><span class="icon show-field-value-icon"></span>Show Field Value</span></li>
<li class="crm-power-pane-subgroup" id="find-field-in-form"><span><span class="icon find-field-in-form-icon"></span>Find Field In Form</span></li>
<li class="crm-power-pane-subgroup" id="show-dirty-fields"><span><span class="icon show-dirty-fields-icon"></span>Highlight Dirty Fields</span></li>
<!--<li class="crm-power-pane-subgroup" id="show-auto-fill"><span><span class="icon auto-fill"></span>Form Auto Fill</span></li>-->
<li class="crm-power-pane-subgroup" id="refresh-ribbon"><span><span class="icon refresh-ribbon-icon"></span>Refresh Ribbon</span></li>
<li class="crm-power-pane-subgroup" id="refresh-form"><span><span class="icon refresh-form-icon"></span>Refresh Form</span></li>
<li class="crm-power-pane-subgroup" id="toggle-lookup-links"><span><span class="icon toggle-lookup-links-icon"></span>Toggle lookup links</span></li>
<li class="crm-power-pane-header"> </li>
<li class="crm-power-pane-subgroup" id="show-field-value"><span><span class="icon show-field-value-icon"></span>Show Field Value</span></li>
<li class="crm-power-pane-subgroup" id="find-field-in-form"><span><span class="icon find-field-in-form-icon"></span>Find Field In Form</span></li>
<li class="crm-power-pane-subgroup" id="show-dirty-fields"><span><span class="icon show-dirty-fields-icon"></span>Highlight Dirty Fields</span></li>
<li class="crm-power-pane-subgroup" id="clear-all-notifications"><span><span class="icon clear-all-notifications-icon"></span>Clear All Notifications</span></li>
<!--<li class="crm-power-pane-subgroup" id="show-auto-fill"><span><span class="icon auto-fill"></span>Form Auto Fill</span></li>-->
<li class="crm-power-pane-subgroup" id="refresh-ribbon"><span><span class="icon refresh-ribbon-icon"></span>Refresh Ribbon</span></li>
<li class="crm-power-pane-subgroup" id="refresh-form"><span><span class="icon refresh-form-icon"></span>Refresh Form</span></li>
<li class="crm-power-pane-subgroup" id="toggle-lookup-links"><span><span class="icon toggle-lookup-links-icon"></span>Toggle Lookup Links</span></li>
</ul>
<ul class="crm-power-pane-section" id="form-actions">
<li class="crm-power-pane-header">Navigations</li>
<li class="crm-power-pane-subgroup" id="go-to-record"><span><span class="icon go-to-record-icon"></span>Go to Record by Id</span></li>
<li class="crm-power-pane-subgroup" id="open-entity-editor"><span><span class="icon entity-editor-icon"></span>Entity Editor</span></li>
<li class="crm-power-pane-subgroup" id="crm-diagnostics"><span><span class="icon crm-diagnostics-icon"></span>Crm Diagnostics</span></li>
<li class="crm-power-pane-subgroup" id="performance-center"><span><span class="icon performance-center-icon"></span>Performance Center</span></li>
<li class="crm-power-pane-subgroup" id="mobile-express"><span><span class="icon mobile-icon"></span>Mobile Express</span></li>
<li class="crm-power-pane-subgroup" id="mobile-client"><span><span class="icon mobile-icon"></span>Mobile Client</span></li>
<li class="crm-power-pane-header">Navigations</li>
<li class="crm-power-pane-subgroup" id="go-to-record"><span><span class="icon go-to-record-icon"></span>Go to Record by Id</span></li>
<li class="crm-power-pane-subgroup" id="go-to-create-form"><span><span class="icon go-to-create-form"></span>Go to Create Form</span></li>
<li class="crm-power-pane-subgroup" id="open-entity-editor"><span><span class="icon entity-editor-icon"></span>Entity Editor</span></li>
<li class="crm-power-pane-subgroup" id="solutions"><span><span class="icon solutions-icon"></span>Solutions</span></li>
<li class="crm-power-pane-subgroup" id="crm-diagnostics"><span><span class="icon crm-diagnostics-icon"></span>Crm Diagnostics</span></li>
<li class="crm-power-pane-subgroup" id="performance-center"><span><span class="icon performance-center-icon"></span>Performance Center</span></li>
<li class="crm-power-pane-subgroup" id="mobile-client"><span><span class="icon mobile-icon"></span>Mobile Client</span></li>
</ul>
<!--
<ul class="crm-power-pane-section" style="">
Expand Down
15 changes: 11 additions & 4 deletions src/js/inject.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,14 @@
}

function InjectSource(sources) {
body = document.querySelector('body[scroll=no]') || document.querySelector('body');

var isPowerPaneInjected = Array.from(window.top.document.scripts).find(function (elem) { return elem.src.indexOf("ui/js/pane.js") > -1 });

if (isPowerPaneInjected != undefined) { //power pane already injected
return;
}

body = window.top.document.querySelector('body[scroll=no]') || window.top.document.querySelector('body');

sources.forEach(function (s) {
body.appendChild(s);
Expand All @@ -92,7 +99,7 @@
var applicationType = GetAppicationType();

if (applicationType == ApplicationType.DynamicsCRM) {
var ribbon = document.querySelector('#navBar');
var ribbon = window.top.document.querySelector('#navBar');

if (ribbon) {
ribbon.prepend(powerPaneButton);
Expand All @@ -101,7 +108,7 @@
return true;

} else if (applicationType == ApplicationType.Dynamics365) {
var officeWaffle = document.querySelector("button[data-id=officewaffle]");
var officeWaffle = window.top.document.querySelector("button[data-id=officewaffle]");

if (officeWaffle) {
officeWaffle.before(powerPaneButton);
Expand Down Expand Up @@ -143,7 +150,7 @@

var style = BuildSytleTag(browser.extension.getURL("ui/css/pane.css"));
var script = BuildScriptTag(browser.extension.getURL("ui/js/pane.js"));

InjectSource([style, script, content]);
}
else if (xmlHttp.status == 400) {
Expand Down
73 changes: 56 additions & 17 deletions src/js/ui/pane.js
Original file line number Diff line number Diff line change
Expand Up @@ -344,13 +344,14 @@ $(function () {
Xrm = CrmPowerPane.TargetFrame.GetXrm();
});

$("#crm-power-pane-button").click(function (e) {

$(document).on("click", "#crm-power-pane-button", function (e) {
$(".crm-power-pane-sections").slideToggle(CrmPowerPane.Constants.SlideTime);
e.stopPropagation();
});

// Hide the pane if it is already open and the user clicked somewhere else.
$(window).on("click", function () {
$(document).on("click", function () {
$(".crm-power-pane-sections").delay(100).slideUp(CrmPowerPane.Constants.SlideTime);
});

Expand Down Expand Up @@ -543,7 +544,7 @@ $(function () {
}
]);
} catch (e) {
CrmPowerPane.Errors.WrongPageWarning();
CrmPowerPane.UI.ShowNotification("An error occurred while getting the user information.","error");
}
});

Expand Down Expand Up @@ -800,10 +801,6 @@ $(function () {
window.open(Content.Xrm.Page.context.getClientUrl() + "/tools/diagnostics/diag.aspx");
});

$("#mobile-express").click(function () {
window.open(Content.Xrm.Page.context.getClientUrl() + "/m");
});

$("#mobile-client").click(function () {
var url = Content.Xrm.Page.context.getClientUrl();
window.open(url + "/nga/main.htm?org=" + Content.Xrm.Page.context.getOrgUniqueName() + "&server=" + url);
Expand All @@ -828,6 +825,19 @@ $(function () {
}
});

$("#clear-all-notifications").click(function () {
try {
Xrm.Page.ui.controls.forEach(function (c) {
try {
c.clearNotification();
} catch (e) { }
});
CrmPowerPane.UI.ShowNotification("Notifications of all fields have been cleared.");
} catch (e) {
CrmPowerPane.Errors.WrongPageWarning();
}
});

$("#open-entity-editor").click(function () {
try {
CrmPowerPane.UI.BuildInputPopup(
Expand All @@ -844,14 +854,18 @@ $(function () {
}
],
function (popupObj) {
var params = popupObj.Parameters;
var entityName = params.entityname.value;
var entityTypeCode = Xrm.Internal.getEntityCode(entityName);
var entityDetail = "";
var entityName = popupObj.Parameters.entityname.value;
if (entityName && entityName.trim() != "") {
var entityTypeCode = Xrm.Internal.getEntityCode(entityName);
var entitiesCategoryCode = 9801; // undocumented
entityDetail = "&def_category=" + entitiesCategoryCode + "&def_type=" + entityTypeCode
}

// ref https://docs.microsoft.com/en-us/previous-versions/dynamicscrm-2016/developers-guide/gg328257(v=crm.8)?redirectedfrom=MSDN#constant-solutionid-values
var defaultSolutionId = "{FD140AAF-4DF4-11DD-BD17-0019B9312238}";
var entitiesCategoryCode = 9801; // undocumented
window.open(Content.Xrm.Page.context.getClientUrl() + "/tools/solution/edit.aspx?id=" + defaultSolutionId + "&def_category=" + entitiesCategoryCode + "&def_type=" + entityTypeCode)

window.open(Content.Xrm.Page.context.getClientUrl() + "/tools/solution/edit.aspx?id=" + defaultSolutionId + entityDetail);
});
} catch (e) {
CrmPowerPane.UI.ShowNotification("An error ocurred while redirecting to entity editor.", "error");
Expand Down Expand Up @@ -1005,7 +1019,7 @@ $(function () {

$("#clone-record").click(function () {
try {
var excludedFields = ["createdon", "createdby", "modifiedon", "modifiedby", "ownerid","vrp_numberofchildincidents"];
var excludedFields = ["createdon", "createdby", "modifiedon", "modifiedby", "ownerid"];
var collectedFields = [];

Xrm.Page.data.entity.attributes.forEach(function (a) {
Expand Down Expand Up @@ -1135,10 +1149,35 @@ $(function () {
});

$("#solutions").click(function () {
var $popupBg = $("#crm-power-pane-popup-bg");
$popupBg.fadeIn(CrmPowerPane.Constants.SlideTime);
var $solutionsPopup = $("#crm-power-pane-solutions-popup");
$solutionsPopup.fadeIn(CrmPowerPane.Constants.SlideTime);
window.open(Xrm.Page.context.getClientUrl() +"/tools/Solution/home_solution.aspx?etc=7100" , '_blank');
});

$("#go-to-create-form").click(function () {
try {
CrmPowerPane.UI.BuildInputPopup(
"Go to create form",
"Redirects you to create form of specified entity. ",
[
{
label: "Entity Schema Name",
name: "entityname"
}
],
function (popupObj) {
var params = popupObj.Parameters;
if (params.entityname.value) {
var linkProps = [Xrm.Page.context.getClientUrl() + "/main.aspx"];
linkProps.push("?etn=" + params.entityname.value.toLowerCase());
linkProps.push("&newWindow=true");
linkProps.push("&pagetype=entityrecord");
window.open(linkProps.join(""), '_blank');
} else {
CrmPowerPane.UI.ShowNotification("Entity name is required. Please fill it and try again.", "warning");
}
});
} catch (e) {
CrmPowerPane.UI.ShowNotification("An error ocurred while redirecting to specified create form.", "error");
}
});
}
};
Expand Down
8 changes: 6 additions & 2 deletions src/sass/ui/pane.scss
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,10 @@ $browserPrefix: 'chrome-extension://__MSG_@@extension_id__' !default;
background: url('#{$browserPrefix}/img/action-icons/dirty.png');
}

span.clear-all-notifications-icon {
background: url('#{$browserPrefix}/img/action-icons/clear-all-notifications.png');
}

span.show-field-value-icon {
background: url('#{$browserPrefix}/img/action-icons/input.png');
}
Expand All @@ -225,8 +229,8 @@ $browserPrefix: 'chrome-extension://__MSG_@@extension_id__' !default;
background: url('#{$browserPrefix}/img/action-icons/robot.png');
}

span.create-form {
background: url('#{$browserPrefix}/img/action-icons/create.png');
span.go-to-create-form {
background: url('#{$browserPrefix}/img/action-icons/go-to-create-form.png');
}
}

Expand Down

0 comments on commit 474073b

Please sign in to comment.