Plugin Deployment process

This forum is for programmers who have questions about the source code.
Post Reply
nanwar
Posts: 16
Joined: Thu Dec 15, 2016 5:27 am

Plugin Deployment process

Post by nanwar » Mon Dec 19, 2016 2:22 am

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?

allends
Posts: 235
Joined: Fri Aug 23, 2013 11:29 am

Re: Plugin Deployment process

Post by allends » Mon Dec 19, 2016 8:23 am

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.
Allen
Open Dental Software
http://www.opendental.com

User avatar
cmcgehee
Posts: 711
Joined: Tue Aug 25, 2015 5:06 pm
Location: Salem, Oregon

Re: Plugin Deployment process

Post by cmcgehee » Mon Dec 19, 2016 9:40 am

Chris McGehee
Open Dental Software
http://www.opendental.com

nanwar
Posts: 16
Joined: Thu Dec 15, 2016 5:27 am

Re: Plugin Deployment process

Post by nanwar » Wed Jan 18, 2017 1:38 am

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 ?

nanwar
Posts: 16
Joined: Thu Dec 15, 2016 5:27 am

Re: Plugin Deployment process

Post by nanwar » Wed Jan 18, 2017 11:50 pm

We are requesting this on behalf of Dr. Oppenheimer. In case you need further information please do let us know.

User avatar
jsalmon
Posts: 1551
Joined: Tue Nov 30, 2010 12:33 pm
Contact:

Re: Plugin Deployment process

Post by jsalmon » Thu Jan 19, 2017 10:31 am

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.
The best thing about a boolean is even if you are wrong, you are only off by a bit.

Jason Salmon
Open Dental Software
http://www.opendental.com

allends
Posts: 235
Joined: Fri Aug 23, 2013 11:29 am

Re: Plugin Deployment process

Post by allends » Mon Jan 23, 2017 2:36 pm

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");
Last edited by allends on Tue Jan 24, 2017 9:29 am, edited 1 time in total.
Allen
Open Dental Software
http://www.opendental.com

nanwar
Posts: 16
Joined: Thu Dec 15, 2016 5:27 am

Re: Plugin Deployment process

Post by nanwar » Tue Jan 24, 2017 5:39 am

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?

allends
Posts: 235
Joined: Fri Aug 23, 2013 11:29 am

Re: Plugin Deployment process

Post by allends » Wed Jan 25, 2017 4:31 pm

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.
Allen
Open Dental Software
http://www.opendental.com

nanwar
Posts: 16
Joined: Thu Dec 15, 2016 5:27 am

Re: Plugin Deployment process

Post by nanwar » Tue Feb 28, 2017 1:01 am

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)?

allends
Posts: 235
Joined: Fri Aug 23, 2013 11:29 am

Re: Plugin Deployment process

Post by allends » Tue Feb 28, 2017 7:35 am

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.
Allen
Open Dental Software
http://www.opendental.com

nanwar
Posts: 16
Joined: Thu Dec 15, 2016 5:27 am

Re: Plugin Deployment process

Post by nanwar » Tue Feb 28, 2017 8:00 am

By saying "Our beta is moved to stable", do you mean v16.4.19 hooks (we submitted) are already in stable version?

allends
Posts: 235
Joined: Fri Aug 23, 2013 11:29 am

Re: Plugin Deployment process

Post by allends » Tue Feb 28, 2017 8:08 am

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.
Allen
Open Dental Software
http://www.opendental.com

Post Reply