Buzztouch Plugins Rev 11/20/2013 1 of 1 Table of Contents !"out Plugins############################################################################################ $ %hat &lugins do######################################################################################$ %h' &lugins are necessar'####################################################################### ( %ho creates &lugins################################################################################ ( )o* do + get ne* &lugins######################################################################### , Managing Plugins in the Buzztouch control &anel#############################################, +nstalling &lugins in a "uzztouch#co- control &anel######################################, .&dating &lugins in a "uzztouch#co- control &anel###################################### Re-oving &lugins fro- a "uzztouch#co- control &anel################################# Managing Plugins in a Self )osted control &anel############################################## +nstalling &lugins in a self hosted control &anel############################################/ .&dating &lugins in a self hosted control &anel############################################/ Re-oving &lugins fro- a self hosted control &anel#######################################/ Plugins on the self hosted control &anel0s *e" server####################################/ .sing Plugins in !&&lications######################################################################## 1 Creating a ne* screen using a &lugin######################################################### 1 Modif'ing a screen0s "ehavior##################################################################10 Creating Plugins####################################################################################### 11 %hen to create a ne* &lugin###################################################################11 2hings to consider *hen creating ne* &lugins###########################################12 Selling or sharing &lugins in the Buzztouch -arket##################################### 12 .&dating a &lugin in the Buzztouch -arket###############################################13 .&dating a &lugin hosted on a third &art' *e"site or "log###########################13 2he &lugin &ackage################################################################################13 .nderstanding the config3c&#t4t file######################################################### 1( Rev 11/20/2013 2 of 1 Rev 11/20/2013 3 of 1 About Plugins 5ver' screen in a Buzztouch a&& is derived fro- a &lugin# 6or this reason, understanding *hat &lugins do, ho* to find the-, ho* to install the-, and ho* to use the- is i-&ortant if 'ou *ant to create an'thing "e'ond the -ost "asic a&&# So-e &lugins are si-&le, so-e &lugins are co-&le4, "ut all &lugins hel& 'ou e4tend the usefulness of an a&&lication# .sing the right &lugins and / or creating 'our o*n &lugins hel&s 'ou -ake 'our a&&lication do al-ost an'thing 'ou can think of# +f 'ou can i-agine it, a &lugin can do it# %hen 'ou add ne* screens to an a&&, 'ou start "' choosing an e4isting &lugin fro- a list in the control &anel# 2he choices in the list are deter-ined "' the nu-"er of &lugins installed in 'our control &anel# 7n "uzztouch#co- control &anels, individual users deter-ine *hich &lugins are installed in their control &anels# 7n self hosted servers, the installed &lugins are controlled in the !d-in Panel of the soft*are# 2his -eans that if 'ou *ant to use a &lugin that does not sho* u& in the list of choices in 'our control &anel, 'ou0ll need to install that &lugin "efore 'ou can use it in an a&&lication# !fter 'ou install a &lugin, it is availa"le for use in all of the a&&lications in 'our control &anel# 87259 +f 'ou install a ne* &lugin after do*nloading the source code for one of 'our &ro:ects, that &ro:ect %+;; 872 contain the ne* &lugin# 2his -eans 'ou *ill need to re< do*nload the source code &ackage for that a&&lication then u&date the a&&lication =re<co-&ile it in >code or 5cli&se? so it includes the ne* &lugin source code# 2his is an i-&ortant conce&t that -an' ne* a&& o*ners struggle *ith# What plugins do 6ro- an a&& o*ners &ers&ective### 1# Plugins allo* a&& o*ners an al-ost endless a-ount of fle4i"ilit' *hen creating -o"ile a&&s# 2# Plugins allo* a&& o*ners to efficientl' and effectivel' create co-&elling native a&&s *ithout learning co-&le4 &rogra--ing languages# 3# Plugins allo* a&& o*ners to save an tre-endous a-ount of -one' *hen -aking native -o"ile a&&s =co-&ared to hiring a develo&er to create an a&& fro- scratch?# Rev 11/20/2013 $ of 1 6ro- a develo&ers &ers&ective### 1# Plugins allo* develo&ers and &rogra--ers to e4tend the functionalit' of the Buzztouch &latfor- in an endless nu-"er of *a's# 2# Plugins allo* develo&ers and &rogra--ers to earn revenue "' selling their creations# 2his -a' "e in the "uzztouch#co- Plugin Market or on a third &art' *e"site or "log# 3# Plugins allo* develo&ers and &rogra--ers a *a' to e4tend their -o"ile develo&-ent skills, gain e4&osure and credi"ilit', and to sho*case their &rofessional *ork# Why plugins are necessary Plugins are necessar' "ecause there is no *a' to &redict in advance *hat an a&&lications &ur&ose, intention, or audience is# Cookie<cutter a&&s and te-&late driven a&&roaches can cover lots of the situations "ut not all of the-# 2he fact is, the "est a&&s, the highest @ualit' a&&s, and the -ost successful a&&s al*a's include uni@ue features that set it a&art fro- all the others# %e have s&ent 'ears at "uzztouch#co- learning, discovering, and i-&roving our conce&t of *e"<"ased a&& -anage-ent# +n this ti-e *e have gained a dee& understanding of *hat *orks, *hat doesn0t *ork, *hat develo&ers *ant, and *hat end<users e4&ect# !n organized, efficient, useful, "eautiful, and oftenti-es fun a&& is the o":ective# ! &lugin architecture is our a&&roach to hel&ing 'ou -eet that o":ective# 8earl' ever' idea or feature 'ou see in a -o"ile a&& is an e4tension of an e4isting idea# Aer' fe* a&&s are genuinel' uni@ue, -ost are i-&rove-ents or e4tensions of functionalit' found in other a&&s# 6or non<creative a&&s, such as a utilit' a&& used "' a grou& of e-&lo'ees, necessar' functionalit' "eco-es -ore &redicta"le# +t is -uch -ore efficient for an a&& develo&er to i-&le-ent custo-ized features and functions "' starting *ith an e4isting foundation of code# 6or e4a-&le, creating a -a& highlighting local restaurants is not uni@ue# )o*ever, i-&le-enting a ne* su&er<restaurant<locator *ith a ne* and e4citing feature could hel& set the a&& a&art fro- other e4isting a&&s# 6or the develo&er, it -akes sense that the &rogra--ing of the su&er<restaurant<locator feature *ould "egin "' leveraging code alread' *ritten in a generic, "oring -a&# Re&ur&osing code is a significant ti-e saver and the Buzztouch &lugin architecture -akes this &ossi"le# Who creates plugins !n'one can create a &lugin# +n -ost cases, ne* &lugins are created using the Plugin Creator tool found in 'our account control &anel at "uzztouch#co-# 2he Plugin Creator 2ool is onl' availa"le to Buzztouch Me-"ers, not guests# )o*ever, it is &ossi"le, and co--on, to create ne* &lugins *ithout using the Plugin Rev 11/20/2013 ( of 1 Creator tool at "uzztouch#co-# +n this case, it0s a -atter of understanding *hat constitutes a Buzztouch &lugin B&ackageC and asse-"ling that &ackage -anuall'# +n -ost cases, &eo&le that create co-&elling &lugins identif' the-selves as develo&ers or as&iring develo&ers# 87259 Plugins that are created -anuall' =*ithout using the Plugin Creator tool? cannot "e u&loaded to a Buzztouch control &anel and cannot "e distri"uted in the Buzztouch Plugin Market# 2his -eans that a &lugin 'ou create -anuall' =*ithout using the Plugin Creator tool? *ill onl' "e useful to a&& o*ners running their o*n Buzztouch self hosted control &anel# +t does take &rogra--ing skill and e4&erience to create so&histicated &lugins# 6or this reason, it is ver' co--on for ne* or as&iring develo&ers to "egin creating &lugins onl' to find that the' need hel& *ith so-e &rogra--ing "efore the' can finish &erfecting their idea# 2his is nor-al and &art of the learning &rocess# +n -an' cases, &lugins are created "' a non<develo&er, then co-&leted "' a develo&er hired to hel& co-&lete a -o"ile a&& &ro:ect# How do I get new plugins +n -ost cases &lugins are discovered and installed in a Buzztouch control &anel "' *a' of the Buzztouch Plugin Market# Plugins in the -arket can also "e do*nloaded for use in self hosted control &anels# 2hird<&art' *e"sites and other develo&ers -a' also distri"ute &lugins# Managing Plugins in the Buzztouch control panel 2he list of &lugins availa"le in a Buzztouch control &anel is -anaged using the Plugins screen# 5ach &lugin icon on this screen re&resents a &lugin that is installed# Installing plugins in a buzztouch.com control panel 2here are t*o *a's to add a &lugin to a "uzztouch#co- control &anel# Rev 11/20/2013 , of 1 1# B' using the B+nstallC o&tion availa"le for an' &lugin dis&la'ed in the Plugin Market =this -a' or -a' not re@uire a fee?# 2# B' clicking the Create Custo- Plugin o&tion and creating a ne* &lugin using the Plugin Creator tool =Buzztouch Me-"ers onl', Duests cannot do this?# Updating plugins in a buzztouch.com control panel Plugin u&dates are co--on and necessar' and t*o things ha&&en *hen an u&date it released# 1# "uzztouch#co- control &anels using the &lugin *ill "e u&dated to the ne* version# !&& o*ners that &reviousl' installed the &lugin in their control &anel *ill have access to the ne* version# 2# !&& o*ners -a' or -a' not need to re<co-&ile their a&&lication=s? source code that uses the &lugin# 2his *ill de&end on the nature of the u&date# +n -ost cases a re<co-&ile *ill "e necessar'# Removing plugins from a buzztouch.com control panel 2o re-ove a &lugin fro- a "uzztouch#co- control &anel# 1# Aisit the Plugin screen in the control &anel "' clicking the &lugin0s icon# 2# Click BRe-ove fro- Control PanelC 8ote9 !&&s using this &lugin that have alread' "een do*nloaded and co-&iled *ill continue to *ork# Managing Plugins in a Self Hosted control panel 2he Manage Plugins screen =availa"le to ad-ins? is used to see *hat &lugins are installed and to install ne* &lugins or to re-ove e4isting &lugins# Rev 11/20/2013 of 1 Installing plugins in a self hosted control panel 2here are three ste&s to install &lugins# 1# Eo*nload the &lugin &ackage=s? fro- "uzztouch#co- =or fro- an' other location?# Plugin &ackages are #zi& archives and each #zi& &ackage contains -ulti&le files# Eo not unzi& the archives after do*nloading the-# 5ach #zi& archive re&resents one &lugin and no t*o #zi& archives *ill have the sa-e na-e# 2# Click the B!dd or .&date PluginsC link on the Manage Plugins screen# ! screen *ill dis&la' that allo*s 'ou to u&load the #zi& &ackage=s?# %hen 'ou u&load a #zi& &ackage, the control &anel soft*are *ill verif' that the &ackage contains all the necessar' files re@uired to -ake the &lugin *ork# Continue this &rocess until 'ou have u&loaded all the &lugins 'ou need to install# 8ote9 +f 'ou u&load a &ackage that 'ou &reviousl' u&loaded 'ou *ill need to check the B.&date 54isting PluginC check"o4# 3# Click the BRefresh PluginsC link# 2he &rocess s'ncs the control &anel soft*are *ith its su&&orting data"ase# +f 'ou don0t refresh the &lugin list after u&loading ne* &ackages the list of installed &lugins *ill not "e u&dated# Updating plugins in a self hosted control panel 2he ste&s to u&dating a &lugin are identical to the ste&s to install a &lugin =see &revious section?# %hen 'ou u&load &lugins that 'ou have &reviousl' installed, 'ou are over*riting the e4isting -atching &lugin *ith the u&date# +t0s i-&ortant to understand that u&dating &lugins in the online control &anel does not change an'thing in an' a&&s that 'ou have alread' co-&iled# 54a-&le9 Fou create an a&& *ith a Ma& Screen then &u"lish it and distri"ute it# +f the Ma& Screen &lugin is u&dated in the control &anel, the a&&s that 'ou have alread' distri"uted *ill still have the Bold codeC fro- the original Ma& Screen &lugin# 2his -a' or -a' not -atter, de&ending on the nature of the u&date# +n so-e cases, it *ill "e necessar' to re<co-&ile and re<distri"ute an' a&&s that rel' on the u&dated &lugins code# Removing plugins from a self hosted control panel 2o re-ove a &lugin, click B;ist Aie*C on the Manage Plugins screen then use the Bre-oveC o&tion# 2his o&tion does not sho* in BDrid Aie*C# Plugins on the self hosted control panel's web server +f 'ou use an 62P &rogra- to "ro*se the file s'ste- on 'our *e" server, the /files/&lugins director' looks like this# 8ote the individual directories for each installed &lugin# %hen 'ou initiall' install the control &anel soft*are, no &lugins Rev 11/20/2013 / of 1 *ill e4ist# 2his is *hat it looks like after 'ou0ve installed a fe*# %hen 'ou click the BRefresh PluginsC link in the control &anel, the soft*are ins&ects the content of each of the folders =see &revious i-age? then u&dates the su&&orting data"ase accordingl'# Using Plugins in Applications reating a new screen using a plugin Plugins are used to create ne* screens in a&&s# 2hree ste&s to use a &lugin### 1# Click the BScreensC link in an a&&s control &anel# 2# 5nter a nickna-e for the screen 'ou0re a"out to create# 3# Choose a &lugin t'&e fro- the dro&<do*n list# Rev 11/20/2013 1 of 1 +t0s i-&ortant to understand that -ost &lugins re@uire additional configuration after adding the- to an a&&# 54a-&le9 2he Custo- .R; &lugin in the e4a-&le i-age *ill re@uire an internet address to function# 2he nu-"er of &ro&erties and the t'&es of infor-ation re@uired to -ake a &lugin *ork are deter-ined "' the &lugin develo&er# So-e &lugins have lots of &ro&erties, others have none# +t all de&ends on the &ur&ose of the &lugin# !odifying a screen's behavior %hen 'ou add a ne* screen to an a&&lication, its default "ehavior is deter-ined "' the &lugin it is "ased on# 2he &lugin develo&er deter-ines this default "ehavior# +n -ost cases, the &lugin *ill need additional configuration# Configuration o&tions =&ro&erties? of each screen are ad:usted using the online control &anel# 2he sa-&le "elo* sho*s the &ro&erties for a screen na-ed BM' %e"&age#C So-e &lugins *ill have lots of fle4i"le &ro&erties and so-e &lugins *ill have none# Rev 11/20/2013 10 of 1 %hen 'ou BsaveC the &ro&erties of an' screen and co--it the changes to the data"ase, it0s likel' that the a&&lication has changed =at least this screen has?# +t0s also &ossi"le that 'ou have alread' co-&iled and distri"uted the a&&lication 'ou are no* -odif'ing# +n this case, devices that have alread' installed the a&& *ill need a *a' to BlearnC a"out the changes 'ou -ade in the online control &anel# +n -ost cases this is handled auto-aticall' "' the device and end<users *ill "e &ro-&ted to BrefreshC the a&&s data# )o*ever, it0s &ossi"le that the a&& o*ner co-&iled, then distri"uted the a&& *ithout a connection to the online control &anel# 2his could "e intentionall' or unintentionall'# +n either case, if the a&& is not connected to the online control &anel, devices *ill have no *a' to kno* a"out the changes# +n this situation, a&& u&dates are onl' &ossi"le "' -anuall' u&dating the a&&s configuration data, reco-&iling the &ro:ect, then re<distri"uting the a&& to end users# +n so-e cases it0s useful to look at the a&&s configuration data =use the Bconfiguration dataC link in the a&&s control &anel? after 'ou -ake changes# 2his is useful in cases *hen 'ou *ant to see ho* the data changes "ased on 'our selections# Creating Plugins When to create a new plugin Creating ne* &lugins is necessar' *hen the availa"le &lugins *ill not acco-&lish Rev 11/20/2013 11 of 1 *hat 'ou need to do# Denerall' s&eaking, if 'ou need a ne* screen t'&e, 'ou need a ne* &lugin# +n -an' cases a ne* &lugin is not necessar' "ecause an e4isting &lugin could "e configured to "ehave in the desired -anner# "hings to consider when creating new plugins 2here are a fe* things to think a"out *hen 'ou0re considering creating a ne* &lugin# !-ong other things, consider this# 1# Eoes the idea of 'our ne* &lugin :ustif' an entirel' ne* Bscreen t'&eC or is 'our idea related to so-ething other than loading a ne* screen t'&e# 8ot all a&& i-&rove-ent ideas are related to loading a Bne* screen#C 2# Eoes the ne* &lugin need to *ork in -ulti&le a&&s in the control &anel or is it ver' s&ecific to one a&&G Fou -a' "e "etter off creating a si-&le one< ti-e screen -anuall' after 'ou do*nload the source code for a &ro:ect# +f 'ou don0t &lan to re<use the screen t'&e, it -a' not "e a good candidate for an entirel' ne* &lugin# 3# %ill 'ou "e sharing or selling the &lugin so other a&& o*ners or develo&ers can use itG $# Eo 'ou have the skill to create the ne* &lugin or *ill 'ou need to recruit or hire so-e hel&G (# %ill 'ou "e using the online Plugin Creator tool to create the ne* &lugin or *ill 'ou "e creating it fro- scratchG ,# %ill the a&&lication=s? using the ne* &lugin re@uire an internet connection to *orkG # Eoes the ne* &lugin rel' on i-ages, audio, video, or file s'ste- assetsG /# Eoes the ne* &lugin need to *ork on -ulti&le device sizes =s-all, large?G 1# Eoes the ne* &lugin need to *ork on -ulti&le &latfor-s =i7S and !ndroid?G !sking 'ourself these @uestions *ill hel& 'ou develo& a strateg' for taking the a&&ro&riate ste&s to*ards develo&ing, or hiring so-eone to develo& the idea# #elling or sharing plugins in the $uzztouch mar%et Plugin develo&ers -a' choose to create &lugins in an effort to earn -one'# 2his is 7H as long as the rules and guidelines e4&lained in the Buzztouch Plugin Eevelo&ers 2er-s of Service# 2hese ter-s can "e found at the follo*ing .R;9 htt&9//***#"uzztouch#co-/&ages/ter-s<&lugin<develo&er#&h& Rev 11/20/2013 12 of 1 Updating a plugin in the $uzztouch mar%et !&& o*ners e4&ect &lugin u&dates and u&dates are co--on "ecause things tend to -ove ver' @uickl' in -o"ile and develo&ers -ake i-&rove-ents constantl'# Su"-itting an u&date to an e4isting &lugin is as eas' as re<u&loading a ne*l' u&dated version to the control &anel# Updating a plugin hosted on a third party website or blog 2he u&date &rocess is slightl' different for &lugins that are not distri"uted using the Plugin Market =these t'&es of &lugin are used onl' "' a&& o*ners running a self hosted control &anel?# 1? Eistri"ute 'our &lugin "' *a' of a do*nload .R;# 2his is nor-all' a *e" address on 'our *e"site such as htt&9//***#site#co-/-'CoolPlugin#zi& 2? +nclude the do*nload.R; in the config#t4t file# !lso include the u&date.R; in the config#t4t file# %hen an a&& o*ner installs the &lugin in their self hosted control &anel, then o&ens the &lugin details screen to vie* that &lugins infor-ation, the' are &resented *ith a Bcheck for u&datesC o&tion if the config#t4t file for the &lugin includes an u&date.R;# 2he u&date.R; &oints to a si-&le te4t file on a *e" server so-e*here ='our *e"site? and this te4t file includes a si-&le Bversion string#C %hen the a&& o*ner checks for u&dates, this .R; returns the -ost current version string# +f the string is different than the version string in the alread' installed &lugin, an u&date is necessar'# 2he Bdo*nload latest &ackageC link in the control &anel o&ens the do*nload.R; in the config#t4t file# 2his si-&le a&&roach allo*s a&& o*ners to do*nload the latest version of 'our &lugin onl' *hen necessar' and relieves 'ou fro- having to Btell ever'oneC that 'our &lugin has "een u&dated# "he plugin pac%age 5ver' &lugin &ackage "egins the sa-e *a'# 2his is true if the &lugin *as created using the Plugin Creator tool, or if the &lugin *as created -anuall'# 5ither *a', the &ackage is the sa-e# ! &lugin &ackage contains so-e standard files and several o&tional su"<directories# +t0s i-&ortant that the file na-es of the standard &lugin files -atch &recisel' *hat is dis&la'ed in the gra&hic# 6ile na-es are case sensitive and -ust include the file e4tension# ! &lugin -a' o&tionall' contain a nu-"er of additional files, -edia, and resources as deter-ined "' the &lugin develo&er# Rev 11/20/2013 13 of 1 Standard Plugin files are: config#t4t, config3c&#t4t, read-e#t4t, icon#&ng, /source<android<A5RS+78, /source<ios<A5RS+78, /screenshots 5ach standard file or su"< director' in the &lugin &ackage has a s&ecific &ur&ose# config.txt: 2his file contains i-&ortant infor-ation a"out the &lugin used "' the control &anel for several things# 2he config#t4t file serves as a sort of -anifest for the &lugin and it0s essential that its infor-ation "e accurate# readme.txt9 2his file contains infor-ation intended for hu-ans# +ts &ur&ose is to e4&lain in &lain<language ho* the &lugin *orks, *hat its &ur&ose is and *h' so-e"od' *ould *ant to add it to their control &anel# +n essence, the read-e#t4t file serves as the instruction -anual for the &lugin# icon.png9 2his is a (0 4 (0 #&ng i-age that dis&la's in the online control &anel# configcp.txt9 2his is a si-&le te4t file that descri"es ho* the control &anel should render the &lugin -anage-ent screen =used "' a&& o*ners?# !source"android"#$%S&'(: 2his su"<director' contains all the re@uired resources for the !ndroid version of the &lugin to *ork# 2his is usuall' onl' t*o files "ut -a' "e -ore# 2he t*o re@uired files in this folder are the !ndroid !ctivit' Class =a #:ava class file? and the !ndroid ;a'out file =a #4-l la'out file?# !dditional files in this folder -a' "e gra&hics, audio, and other su&&orting #:ava code or #4-l la'out code# +2 +S +MP7R2!82 27 .8E5RS2!8E 2)!2 2)5 !8ER7+E 6+;5S !R5 BR7H58 +827 S5A5R!; S.B<E+R5C27R+5S# 5>P;7R5 !8 5>PS+2+8D P;.D+8 P!CH!D5 27 S55 2)+S S2R.C2.R5# 2he structure is not ar"itrar', it -atches the structure of a t'&ical !ndroid &ro:ect# !source"ios"#$%S&'(: 2his su"<director' contains all the re@uired resources for the i7S version of the &lugin to *ork 2his is usuall' onl' t*o files "ut -a' "e -ore# 2he t*o re@uired files in this folder are the .+Aie*Controller0s #- and #h files# !dditional files in this folder -a' "e gra&hics, audio, and other su&&orting 7":ective<C o":ects necessar' to su&&ort the .+Aie*Controller# !screenshots: 2his o&tional su"<director' contains screenshots dis&la'ed in the control &anel# %hen creating screenshots, e4&ort the- as light*eight #&ng files# +f 'ou screen<ca&ture the si-ulator running 'ou0ll end u& *ith i-ages around 31, 4 $$ *hich is a&&ro&riate# Eo not include an' thu-"nail versions of the screenshots, the control &anel *ill create these auto-aticall'# Rev 11/20/2013 1$ of 1 Understanding the config&cp.t't file 2he *e"&age that sho*s in the control &anel is configured "' *a' of rules contained in the config3c&#t4t file# 2his file has a list of BsectionsC that sho* on the *e"&age# 5ach section re&resents an o&tion or value that the a&& o*ner can ad:ust# So-e sections are standard, others are custo-# Most &lugins contain a -i4ture of standard and custo- sections# IJ&ro&ert'SectionsJ9K IJfile2'&eJ9J"t3sectionJ, Jfile8a-eJ9J"tSection3navBar#ht-lJL, IJfile2'&eJ9J"t3sectionJ, Jfile8a-eJ9J"tSection3login#ht-lJL, IJfile2'&eJ9Jcusto-J, Jfile8a-eJ9J-'Custo-Section#ht-lJL, IJfile2'&eJ9J"t3sectionJ, Jfile8a-eJ9J"tSection3"ackgroundColor#ht-lJL, IJfile2'&eJ9J"t3sectionJ, Jfile8a-eJ9J"tSection3"ackground+-age#ht-lJL, IJfile2'&eJ9J"t3sectionJ, Jfile8a-eJ9J"tSection3search#ht-lJL, IJfile2'&eJ9J"t3sectionJ, Jfile8a-eJ9J"tSection3ta"Bar#ht-lJL, IJfile2'&eJ9J"t3sectionJ, Jfile8a-eJ9J"tSection3screenMson#ht-lJL N L 8ote the standard sections, along *ith one custo- section# 2he -'Custo-Section#ht-l file *ould "e included in the &lugin &ackage# 2his *as created "' the &lugin develo&er# 2his is 872 a co-&lete #ht-l *e" &age, it is onl' a sni&&et of )2M;# 2he control &anel *ill include this sni&&et *hen the a&& o*ners lands on the *e"&age used to control the &lugin# Standard Sections# +nclude these *ithout *riting code# "tSection3ads#ht-l "tSection3"ackground!udio#ht-l "tSection3"ackgroundColor#ht-l "tSection3"ackround+-age#ht-l "tSection3child+te-s#ht-l "tSection3data.R;#ht-l "tSection3docu-entBehavior#ht-l "tSection3login#ht-l "tSection3-enu;ist;a'out#ht-l "tSection3-enu;istRo*s#ht-l "tSection3navBar#ht-l "tSection3nickna-e#ht-l "tSection3screenMson#ht-l "tSection3search#ht-l "tSection3ta"Bar#ht-l Rev 11/20/2013 1( of 1 %hen creating custo- sections it0s nor-all' "est to co&' a standard section and -odif' it to 'our needs# Custo- Sections use Mavascri&t to -odif' control &anel data# 2he landing &age for a &lugin is hosted "' the control &anel and includes sections for each &lugin# 2his landing &age e4&oses so-e Mavascri&t varia"les and functions that &lugin develo&ers use to -odif' data# Mavascri&t Aaria"les availa"le to develo&ers *hen creating custo- sections# user)uid the uni@ue id of the user using the control &anel# App)uid the uni@ue id of the a&&lication in the control &anel# B*item&d the uni@ue id of the screen in the control &anel# screen+ataU%, the .R; to this screens data if child+te-s are used# -S'(String the co-&lete MS78 string of data configured for this screen# +t0s necessar' to kno* these values *hen *orking *ith the :avascri&t functions# fn.ill.orm#alues/-S'(String0 2his -ethod is used to &re<&o&ulate the for- field ele-ents on the landing &age# 2his is nor-all' fired *hen the &age first loads so the a&& o*ner sees their &reviousl' saved settings# fn$xpandCollapse/hide'r$xpand$lement&d0 2his -ethod is used to e4&and or colla&se an )2M; container# Consider a n ht-l div or &aragra&h ele-ent that e4&ands and colla&ses *hen clicked# function sa1e-S'(Properties/sho2%esults&n$lement&d0 2riggering this -ethod *ill save all the users selections to the data"ase# 2he &ro&erties and values that are saved are -a&&ed directl' to the for- field ele-ents on the landing &age# !ll for- ele-ents *ho0s na-es are &refi4ed *ith B:son3C *ill "e saved# 54a-&le9 :son3data.R; or :son3first8a-e# 2he data.R; and the first8a-e entr' *ould "e saved to the "ackend# +n al-ost all cases the su"-it "utton0s in each section call this routine to save all the user selections# fnSetSelected&ndex/the$l3 the#alue0 ! si-&le hel&er routine to -anuall' set the selected inde4 of a dro& do*n ele-ent# !n )2M; OselectP ele-ent# Rev 11/20/2013 1, of 1 fnPic4Color/form.ield&d0 2his o&ens the color &icker screen# %hen a color is selected the value is inserted into the for- field on the underling landing &age# fnPic4Screen/B*item&d$lement(ame3 nic4name.orm$lement(ame0 2his o&ens the screen &icker# 2his is nor-all' used *hen a&& o*ners select screens to use on "utton clicks# fnPic4Menu/B*item&d$lement(ame3 nic4name.orm$lement(ame0 2his o&ens the -enu &icker# 2his is nor-all' used *hen a&& o*ners select conte4t -enus on individual screens# fnPic4.ile(ame/B*item&d$lement(ame3 nic4name.orm$lement(ame0 2his o&ens the file &icker# 2his is nor-all' used *hen a&& o*ners select file na-es for i-ages and other file "ased assets# fnPic4.ileU%,/B*item&d$lement(ame3 nic4name.orm$lement(ame0 2his o&ens the file &icker# 2his is nor-all' used *hen a&& o*ners select file .R;0s for i-ages and other file "ased assets# fn$xecuteBac4endCommand/theCommand0 2his -ethod is used to interact *ith "ackend data# 2he co--and value 'ou &ass can "e one of several o&tions# 7&tions include9 getPlugin7&tions Returns a list of installed &lugins for the user# getChild+te-s Returns a list of MS78 o":ects for child+te-s# addChild+te- .sed to insert ne* child+te-s for a screen# re-oveChild+te- .sed to re-ove a child ite- for a screen# u&dateChild+te-s7rder .sed to -odif' the order+nde4 of child ite-s# +n -ost cases it0s "est to revie* ho* other e4isting &lugins use these -ethods "efore tr'ing to use the- 'ourself =unless 'ou0re an e4&erienced :avascri&t dev?# 2he -ost co-&licated set of routines are related to child+te-s# Screens that dis&la' a list of child ite-s are -ore co-&le4 than other screens and as such the &lugin develo&er needs to understand ho* to add / re-ove ite-s on the screen# Rev 11/20/2013 1 of 1