Page 1 of 1

Plugin Deployment process

Posted: Mon Dec 19, 2016 2:22 am
by nanwar
Hi there,

- What’s the deployment process of plugin in official open dental release?
- How would we send test plugin release to QA in order to verify plugin first?

Re: Plugin Deployment process

Posted: Mon Dec 19, 2016 8:23 am
by allends
Plug-in hooks are requested here, in the developers forum.
Once I have looked them over to make sure they conform to our patterns, I place them into our latest beta version and they will be available for the next release.

As for plug-ins themselves, we do not add them to the program or our release process. It is up to the plug-in designer to deploy the plug-in to their intended audience.
Testing a plug-in should be as simple as building your own version of OpenDental with the hooks added to the necessary parts of the program. Be sure to check if a hook has already been added.

Re: Plugin Deployment process

Posted: Mon Dec 19, 2016 9:40 am
by cmcgehee

Re: Plugin Deployment process

Posted: Wed Jan 18, 2017 1:38 am
by nanwar
Can you please add following hooks in Open dental's next release:
https://www.evernote.com/shard/s735/sh/ ... e1829975b6

Also please confirm when is the next release due ?

Re: Plugin Deployment process

Posted: Wed Jan 18, 2017 11:50 pm
by nanwar
We are requesting this on behalf of Dr. Oppenheimer. In case you need further information please do let us know.

Re: Plugin Deployment process

Posted: Thu Jan 19, 2017 10:31 am
by jsalmon
We are currently reviewing the plugin hooks and are working on adding them to the program. We will post back here with any questions if they arise otherwise we will post a verification reply letting you know the final state of each hook that was added.
We often have to rename hook requests to follow our hook patterns closer so some might change and they might not. We'll keep you posted.

Re: Plugin Deployment process

Posted: Mon Jan 23, 2017 2:36 pm
by allends
This is a lengthy list and I will try to be as thorough as possible when addressing each of these hooks.
First, I will not that line numbers are generally a bad way to reference locations you want code inserted since our code is constantly changing.
It is good that you added the line description you want the hook above, but in some cases more context would help me to identify where you want the hooks.

Second, a large amount of these hooks are named incorrectly. This link should show what our current naming patterns for hooks are.
http://opendental.com/manual/patternplugins.html

Lastly, download our plug-in example solution. It has a lot of good examples of how to use our plug-in system. The main one you will want to focus on is getting controls from the sender object by casting it to the relevant form you retrieved it from.
http://opendental.com/manual/plugins.html

Now, onto the hooks.

Hook 1

Code: Select all

object[] parameters = { panel1, AptCur, pat };
Plugins.HookAddCode(this, "FormApptEdit.LoadAppointmentCentricControl", parameters);
This hook is currently named incorrectly for the location. You also do not need to pass in the panel. All controls should be available through the sender object that is passed along with the hook.

Code: Select all

Plugins.HookAddCode(this, "FormApptEdit.Load_end3",AptCur, pat);
Hook 2

Code: Select all

object[] parameters = {panel1, AptCur.AptNum};
Plugins.HookAddCode(this, "FormApptEdit.SaveApplicationCentricInfo", parameters);
This hook is also incorrectly named. Same as above, it does not need the panel object. Passing in the whole object makes it useful to other plug-in creators.

Code: Select all

Plugins.HookAddCode(this, "FormApptEdit.butOK_Click_end", AptCur);
Hook 3

Code: Select all

object[] parameters = { Controls, PatCur, textWirelessPhone.Text, textEmail, listTextOk};
Plugins.HookAddCode(this, "FormPatientEdit.LoadPatientCentricControl", parameters);
This hook is unnecessary. The hook you referenced above it will work fine.

Code: Select all

Plugins.HookAddCode(this,"FormPatientEdit.Load_end",PatCur);
Hook 4

Code: Select all

object[] parameters = { textPhone.Text };
Plugins.HookAddCode(sender, "FormPatientEdit.WirelessPhoneNumber_TextChanged", parameters);
This hook is named incorrectly and also needs no parameters.

Code: Select all

Plugins.HookAddCode(sender, "FormPatientEdit.textAnyPhoneNumber_TextChanged_end");

Hook 5

Code: Select all

object[] parameters = {listTextOk };
Plugins.HookAddCode(this, "FormPatientEdit.TextOk_SelectedIndexChanged", parameters);
This was very hard to decipher where you wanted this hook since your document said you want it in load, but you hook name suggested this method (ListBox_SelectedIndexChanged).
I have corrected the name and also removed the unnecessary parameter below.

Code: Select all

Plugins.HookAddCode(this, "FormPatientEdit.ListBox_SelectedIndexChanged_end");
Hook 6

Code: Select all

object[] parameter= { PatCur.PatNum };
Plugins.HookAddCode(this, "FormPatientEdit.SavePatientCentricInfo", parameter);
This hook is unnecessary. Right above it is a hook that passes in the PatCur object.

Code: Select all

Plugins.HookAddCode(this,"FormPatientEdit.butOK_Click_end",PatCur);
Hook 7 and 7.5?

Code: Select all

object[] parameters = { aptCur, true};
Plugins.HookAddCode(this, "ContrAppt.AppointmentCancellationProcess", parameters);
I see where you are going with this hook, but our pattern is to make hooks as separate as possible.
Absolute bools do not need to be passed into a hook and aptCur actually didn't exist in one of your locations.

Location 1

Code: Select all

Plugins.HookAddCode(this, "ContrAppt.ContrApptSheet2_MouseUp_validation_end", apt)
Location 2

Code: Select all

Plugins.HookAddCode(this, "ContrAppt.pinBoard_MouseUp_validation_end", aptCur)
Hook 8

Code: Select all

object[] parameters = {apt, false};
Plugins.HookAddCode(this, "ContrAppt.AppointmentCancellationProcess", parameters);
This has the same problems as Hook 7/7.5

Code: Select all

Plugins.HookAddCode(this, "ContrAppt.OnBreak_Click_validation_end", apt)

Hook 9

Code: Select all

Plugins.HookAddCode(this, "FormApptLists.EmptySlotButton");
There is currently no code in the FormApptLists_Load method so I assume you just want it in the method.

Code: Select all

Plugins.HookAddCode(this, "FormApptLists.Load_start");

Hook 10

Code: Select all

Plugins.HookAddCode(this, "FormOpenDental.RescheduleAppointments");
This hook is fine and just needs renamed.

Code: Select all

Plugins.HookAddCode(this, "FormOpenDental.RetrieveForAddress_after_received");
Hook 11

Code: Select all

Plugins.HookAddCode(this,"FormOpenDental.AddMenuBarItem");
This hook is unnecessary since the hook you need exists right above it

Code: Select all

Plugins.HookAddCode(this,"FormOpenDental.Load_end");

Re: Plugin Deployment process

Posted: Tue Jan 24, 2017 5:39 am
by nanwar
Thanks for sharing the hooks binding details.
We will update the implementation as per above modified hooks pattern.

We have only updated hook # 5(Parameter added) from above i.e.
Plugins.HookAddCode(this, "FormPatientEdit.ListBox_SelectedIndexChanged_end", PatCur);

Please review the below updated document and do let us know if something missing
https://www.evernote.com/shard/s735/sh/ ... e1829975b6

We are assuming that above hooks will be available in Open dental’s next beta version release.
Can you please confirm the release due date?

Re: Plugin Deployment process

Posted: Wed Jan 25, 2017 4:31 pm
by allends
These hooks have been committed to 16.4.19

Code: Select all

Plugins.HookAddCode(this,"FormApptEdit.Load_end3",AptCur,pat);
This hook was committed for Hook 1. If this is not what you need then let me know.

Re: Plugin Deployment process

Posted: Tue Feb 28, 2017 1:01 am
by nanwar
Hi guys,

Thanks for the update, we downloaded the beta version and it's working perfectly. When are we planning to launch changes (i.e. v16.4.19) to production (as a stable version)?

Re: Plugin Deployment process

Posted: Tue Feb 28, 2017 7:35 am
by allends
Our beta is moved to stable when the next beta is released. We generally strive to have a fairly rapid release schedule, but no time has yet been set for our next release date.
That said we try to not go longer than three months between versions.

Re: Plugin Deployment process

Posted: Tue Feb 28, 2017 8:00 am
by nanwar
By saying "Our beta is moved to stable", do you mean v16.4.19 hooks (we submitted) are already in stable version?

Re: Plugin Deployment process

Posted: Tue Feb 28, 2017 8:08 am
by allends
No. Currently 16.3.X is our stable version. That changes with each major release cycle (Major releases being 16.4.1 or 17.1.1).
16.4.X will be moved to be our stable version when we release 17.1.1 as our beta version.