From e8eb8893265310b956d652fa70d3bc30078400e6 Mon Sep 17 00:00:00 2001 From: Juan Leyva Date: Wed, 15 Mar 2017 10:47:09 +0100 Subject: [PATCH] MDL-57162 tool_mobile: Native app banners for Android --- admin/tool/mobile/lang/en/tool_mobile.php | 10 ++-- admin/tool/mobile/lib.php | 13 +++-- admin/tool/mobile/mobile.webmanifest.php | 59 ++++++++++++++++++++++ admin/tool/mobile/pix/icon_144.png | Bin 0 -> 13710 bytes admin/tool/mobile/settings.php | 3 ++ admin/tool/mobile/version.php | 2 +- 6 files changed, 79 insertions(+), 8 deletions(-) create mode 100644 admin/tool/mobile/mobile.webmanifest.php create mode 100644 admin/tool/mobile/pix/icon_144.png diff --git a/admin/tool/mobile/lang/en/tool_mobile.php b/admin/tool/mobile/lang/en/tool_mobile.php index bdab272efc4..aaed36cd514 100644 --- a/admin/tool/mobile/lang/en/tool_mobile.php +++ b/admin/tool/mobile/lang/en/tool_mobile.php @@ -22,6 +22,8 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ +$string['androidappid'] = 'Android app\'s unique identifier'; +$string['androidappid_desc'] = 'This setting may be left as default unless you have a custom Android app.'; $string['autologinkeygenerationlockout'] = 'Auto-login key generation is blocked because of too many requests within an hour.'; $string['autologinnotallowedtoadmins'] = 'Auto-login is not allowed for site admins.'; $string['clickheretolaunchtheapp'] = 'Click here if the app does not open automatically.'; @@ -44,15 +46,15 @@ Mis calificaciones | https://someurl.xyz/local/mygrades/index.php | embedded | e Use inappbrowser when you want to open the link in a browser without leaving the app, use browser for opening the link in the device default browser and embedded if you want to display the link embedded in a new page in the app.'; $string['disabledfeatures'] = 'Disabled features'; $string['disabledfeatures_desc'] = 'Select here the features you want to disable in the Mobile app for your site. Please note that some features listed here could be already disabled via other site settings. You will have to log out and log in again in the app to see the changes.'; -$string['enablesmartappbanners'] = 'Enable Smart App Banners'; -$string['enablesmartappbanners_desc'] = 'This will display a banner promoting the Moodle Mobile app when visiting the site in Mobile Safari.'; +$string['enablesmartappbanners'] = 'Enable App Banners'; +$string['enablesmartappbanners_desc'] = 'This will display a banner promoting the Moodle Mobile app when visiting the site in a Mobile browser.'; $string['forcedurlscheme'] = 'If you want to allow only your custom branded app to be opened via a browser window, then specify its URL scheme here; otherwise leave the field empty.'; $string['forcedurlscheme_key'] = 'URL scheme'; $string['forcelogout'] = 'Force log out'; $string['forcelogout_desc'] = 'If enabled, the app option \'Change site\' is replaced by \'Log out\'. This results in the user being completely logged out. They must then re-enter their password the next time they wish to access the site.'; $string['httpsrequired'] = 'HTTPS required'; $string['invalidprivatetoken'] = 'Invalid private token. Token should not be empty or passed via GET parameter.'; -$string['iosappid'] = 'App\'s unique identifier'; +$string['iosappid'] = 'iOS app\'s unique identifier'; $string['iosappid_desc'] = 'This setting may be left as default unless you have a custom iOS app.'; $string['loginintheapp'] = 'Via the app'; $string['logininthebrowser'] = 'Via a browser window (for SSO plugins)'; @@ -65,7 +67,7 @@ $string['mobilecssurl'] = 'CSS'; $string['mobilefeatures'] = 'Mobile features'; $string['mobilesettings'] = 'Mobile settings'; $string['pluginname'] = 'Moodle Mobile tools'; -$string['smartappbanners'] = 'Smart App Banners (iOS only)'; +$string['smartappbanners'] = 'App Banners'; $string['pluginnotenabledorconfigured'] = 'Plugin not enabled or configured.'; $string['remoteaddons'] = 'Remote add-ons'; $string['typeoflogin'] = 'Type of login'; diff --git a/admin/tool/mobile/lib.php b/admin/tool/mobile/lib.php index 9717c5372d9..de43b8190da 100644 --- a/admin/tool/mobile/lib.php +++ b/admin/tool/mobile/lib.php @@ -36,9 +36,16 @@ function tool_mobile_before_standard_html_head() { // Smart App Banners meta tag is only displayed if mobile services are enabled and configured. if (!empty($CFG->enablemobilewebservice)) { $mobilesettings = get_config('tool_mobile'); - if (!empty($mobilesettings->enablesmartappbanners) and !empty($mobilesettings->iosappid)) { - $output .= ''; + if (!empty($mobilesettings->enablesmartappbanners)) { + if (!empty($mobilesettings->iosappid)) { + $output .= ''; + } + + if (!empty($mobilesettings->androidappid)) { + $mobilemanifesturl = "$CFG->wwwroot/$CFG->admin/tool/mobile/mobile.webmanifest.php"; + $output .= ''; + } } } return $output; diff --git a/admin/tool/mobile/mobile.webmanifest.php b/admin/tool/mobile/mobile.webmanifest.php new file mode 100644 index 00000000000..ac9bb5fa7e8 --- /dev/null +++ b/admin/tool/mobile/mobile.webmanifest.php @@ -0,0 +1,59 @@ +. + +/** + * Web manifest for including a native app banner. + * + * The banner is only displayed if the user has visited the site twice over two separate days during the course of two weeks. + * More information here: https://developer.android.com/distribute/users/banners.html + * + * @package tool_mobile + * @copyright 2017 Juan Leyva + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +define('NO_DEBUG_DISPLAY', true); +define('NO_MOODLE_COOKIES', true); + +require_once(__DIR__ . '/../../../config.php'); +use tool_mobile\api; + +header('Content-Type: application/json; charset: utf-8'); + +$mobilesettings = get_config('tool_mobile'); +// Display manifest contents only if all the required conditions are met. +if (!empty($CFG->enablemobilewebservice) && !empty($mobilesettings->enablesmartappbanners) && + !empty($mobilesettings->androidappid)) { + + $manifest = new StdClass; + $manifest->short_name = format_string($SITE->shortname); + $manifest->prefer_related_applications = true; + $manifest->icons = [(object) + [ + 'sizes' => '144x144', + 'type' => 'image/png', + 'src' => "$CFG->wwwroot/$CFG->admin/tool/mobile/pix/icon_144.png" + ] + ]; + $manifest->related_applications = [(object) + [ + 'platform' => 'play', + 'id' => $mobilesettings->androidappid, + ] + ]; + echo json_encode($manifest); +} +die; diff --git a/admin/tool/mobile/pix/icon_144.png b/admin/tool/mobile/pix/icon_144.png new file mode 100644 index 0000000000000000000000000000000000000000..70c15c651182dc1429da0709d794e503ad56923e GIT binary patch literal 13710 zcmaKTWmp}}vhKnO9xONucUic*1-IZ13wQV6?(Xiv-GfVTcXtWy1i1P3Is2UZ&zh&G%4?OJO_mRYI>)!&`SzN~( z&Cn4H5H_(h0t3I=7@C2V!G6%h`*9%`K!n9ls^Wq=EuK zK6jqK1U6u2L!i5jwXGA6J3r~aczOQT|LJBT1^!FK*@~a^zl_q5Qv{0IIf8-gjLZzi z%p4#f2OA@ZjhUN`n;yu*3}R*iu`n@nGJu$Q*g1KaLBRjMNdIbcG%@8-7L)jIU4L8r zq~^}f_B>2XZfzE7KXnP3{D=l&W7#`woYXKW)K5A89Q3o zJ6qV<0{>w&G_rGX<|qAY>3_LkWB)(2wod;&On(QA$=%SN3B<_!k4yg+l#~1ai`v-y zkF=AsGWdV({eKcWse0IhnUuj!b}o*_e<#kA>>pM3Jfe&%u_pi77MA~rW%_Fj(?3)De@*qjyZ*+{Kh^&U+`owWM1if!{|y*KG@VW8s^=&&T7(y*gHY((b;)jrpCTyjt(*9=V@9 z5fy~<4cDi<#NnU)qD?>JCrq!$S*L{NTwImeDC!~w)vzE%Xzd(!CTk`xg=zJ9J=pB8 zUdSpP7ySD4)KAliVK#l|?*?IG0Ugv`zyDlBGJ<;V5 zVZc`#Huzez9*v>rrZj1zjcX}XnD9CTc=pGz4@OkIIhaM?bn9wn-t1pfYd@#^PX&i2 zWqY~A0~22$+VgO0?0&wv>U@8@-$WXik(~#&Lwfu<0srXni}vJuQ}oLt!|ZWx_dAkE zaQ|}*X_OH&LFcK^ad+2rWTP$Ud{IsZ$H91cqOmrIdkM2(e2%nd!jdd9f!x!^Umb+rI&7x@zEUkJ_|~fu>U(z}DdCpAN!;tz{9vH#hC>5egaoII ze1Hhs`b^qn1(X4mL*!WQPfy}d#n0IvUEuyXy@G5;X|{V?gqwWX@0iki?0s-A>WE8| zd^o<9)h~uNh(b)*g^GLeXd-&Q$Kq!%FfSizoM%3_tESh01opyf&Mem5v!+&WdX9-( z34A-tR@MEyPYof(aVsDoXp53 z3`Ix!@uenA-{l0^O!xkZuK)4RH51DB69r;C-wVP_9*6rwMiTB;3#&#`Jlly{={P1u zZ>J;Z9Il)J%6Pv>w&wk_m?Q zbFsGqe{TQoI+B-6FU1dIb^e#@iBzAx^il1Pu{Wyjn_YLF*WAgIe(91}Y^T-PL4PAz z4P>VM>n&o!!RmO`^ELIFx3x>1h6gx)C6_nI#Mky}b(~Ug_m3(==||R$rFU%5M+loo zMrF?IkP=Xul7wij z@FHLikF#3pe^;S?cfJ)(t&Y@xvN;6vJGO$*7VaaWA^L@qY| zjQ$eFNMSF_AZCJm*oU2**gB`eaG9)7qg22-Q_ZW zbSQ4v>M69+1RnKxFKg~#)lXc>@0mQ#m!TYQ`$^qb4`OOo4E8$C(V}B$HCu^8giOi@ zqLGvN7q)!tSX#Z$= zd$3y`t{ELJ*Oz)N?;V-1q-$RqUS?TPthI)cA^6e?e$gz*vga~B26wn7WVBG2kTdc^ zBCMvzylpo39&^Bw5@d`bP>p^8T#p6e_`L_Wols#rKCLGI=ytqbeF7s^8Rb~^#6u!2 z;7|VfeBErM=jXUyVhS7^vwfFBD5Bu1AJ4pqfrjmN+j!wkBb$G{FQu%Fn;F0{odZNL z&)wswoWv4q4}><~`)-#syxLiWuQ;*^VQs5g0oCo%h^O#0#+20T4xREW!Bkqr zGd3;VJ_q`@4_#-)D~AvRa!UkGW8X&@Ip&FUZUueK2CF;{;a&u+!DiXJWsWY}?yM3G zhm}f+2R4wp8neP8GE))+T*RA;UV96f9n~JEV(3$`rO^ItNO=YT_bWw_yjvMN+?T$J z$!Wz!1@#T(a5blcN$JVWuiHB(PY7w2btJJGN#`CryA!>E(OP^gecF#xO#0WUdPQvqawr)7`sjf=ZQOhxPQK!g#E+$FGE? zdqfdyO$T5{H^9D7LcLO?oK{9W491+c-RjKu{+$(iUoUT^AiGmoG-BN??yTK1@?7rk z+bY+Jz{+QEhfWU}m=JeQYGsJmNCy^C+OKSDtlp^1k%1HWaIhBIRwyBpefUZiQ8)=) z=`_df!^w($dbG-UY3Nb}*u^z(z$J_&_-bIIZa&7VaN_O8Q}c>Qqz$aaUUayVQfQ`u z6fXxzOrmqZ#%F(9u0*09grz>=mlIZ`3ENm15uRg!REqHcXTBETSFfz!S9c}ic5=m6 zpbF`Dm)@vOuXwdQ=&WsFM}2WVWpW2XL?fP|rBm7yW|Ah)%kQ$h@0*%h7UXCR4_g{g z;=cA}M^`d_KT8Y44&@WDm$-ymIS^&Fr~-YSSa0Pr&UM4ez?vNRl%wTEOw!cad$?(L zcFi$C<{65FCY{`1iPJNx1~#owerR7Fk^Ay&GnCfia}lu&gYVU^jsMWc@etHv{W~`2 zWDRIR$Um9y1PI3_T@<^qbSTgY2qc0Kz050&R0n%#lZM!gTh2(!*<3j~Hysoo9D z9}ilsGFjjV*=fzV>Z!A#&EjKCF^;Psx_83VBd#UkDLX(!8`(YWx+T-XE1z#UwUsDu zkg@sh-RRVMS}XhiE{XJpRRWn|+UXJgT(%mYw_^Ub(#_}EETT2eR}$JXBps$o{J9lo zC#!vQV$bSV;^*|x$t2OSH+qY_o6oaG(LErC2<)-Zjjh=xlP^@s5L%Wm(Yd!pX{;d( z!@YV%A zBv9PecSKUhWv=nSDn=aq-$H=aB|l041?dOMp248K=M^O&(mE-sLG=t~Ut;=U_}0P^>kV{Iy;8gTh+izgP}36myg?H^gUtg|Zd`xha1N z6G|QEs=*RMrj|`VreHiN{gyUtSijH6SLZ-MAz>VTon<77uDpXMKsheVk~#y*F2a#9 z$I+Yyb>Z0!Wm{YdEOJP{RK2%Qs-3;#-NORLz8J7 zDR&OnR7oCB7|%)%W+(S!i*#%h5ZwCdF%;AaeR*z3{OPvUFBI*|LU7FMoSQQ0Ap!CnuCVH6|QjKgBBlJl&<0=?o z(rO6kN*j3m`xt(fAYGK2uaHE_`0mc1af3BrB@D3!pt3%}Mqqq0*kZf7A-DH~Fl7^l ziE9jipueDS=n-2^ob^+h!;Y<36~Xr|=5P(Z@K1JsY{n6Aw}gCCaGomQNk@@0+&NCaQ8ARG_WD(Dmw$(lZGTp)F|n5Va%Y+#=b`cTSK1b zQY^EUZy(SE>>={uW~I|_01)70lLEzQJQR|_mZvcTEQv7eAu3A@!^6#1t=@xt0lj`2 z=3haX*1VZ{EK}2l0%7+ZU<~6=Vyo||AdIpJ!?@a*y`~TP{Ycn^NzoQ0kFSoO$;VYH zn2i6(ePKx}O^7PR?Bv4eal(M;WU2C_8aa4g)ycw7+x+a8FWw-Ld1;fC&jl3y?bB)^ zgKEo17Odil5akk}mI(7TE2NJ_W`V)m-1Ji@lj$rcww$W!P|BrB18i}1N#!^CA`Wo( z`tq=CJHR6$t=!QC0-(px&a5zpyIs5j%*lb@E5=O*p@N*@q2#FZ$fU{uQSxt9IJ#+- zfS1sey~pOztDI=W}U&|e%b5ft5%$n zjEjy)+LYo?gLO7<0NeHW;b757#dJj!Xw1aO7z8Fo&DPA-UH0Th`hFzF_K|CD1{Oqz z8PU9}5sJD$MdHaBRJ7 zfASIk&|}7pnoKV&1SkJcH}*Dxo|~JKV-hu?=S33Zg}Z8=M0Lp0qZFQ*eX;lfC zI@{ld2WZSvcGy^zZo8Jb*ZkufY59nfeaL>vCQX*n=ubl%uvPgfQb%FYh16Qi(JXf! zusJ(BZ@=sRfiyNYK5sBksVqzcs#W3*gt|gs5ie4qMKZ^a-^uqF*3;T{4dOC4Bt#hxtebKGH&bxB9Xefs6F77%4It++D6w?~5o z&gGqrIL12hG9<|rh4jYAQYT1Kr$Ba+gZ1FCTEl)=>*ZGA&XRFoWK`6>m2BR+?;pP7 z%nzR=`ykz;qu8C8=vFtwSr_kj$;?dcCk;Z<>Aumg5-RFgW~_RmRKaT_(zUsprKB~k zKs8tpS(&U-Cj6cd$B-Dt6bv|8pv2OcK0vhJCul|&Fy0Ynnem?Se`mz zAJ#`&W*Rw0RV@sO_u5oZ42RZR<&0t?Qn`AVD|i}#`K_^mkGTi-_AxPn3Y~jp5n$bw6-!$c5ty0`aMxX> z4WMb?WtItUdb-6}tdkB;{IjB(jOc31gGEj0rzx90E<3CI6u%mhVm_u>Mgr?NC(ucs zVL&*<70eg&W!Igy19qy^OYBsX9@^SO%Xs6(MWbKLo(*sCe4Rj#-x*#(;29HY{1f?? z#N9fmh|jfqemf;HbIvnQ$d3e@)8~)bx*K6bYs~BdG4s0x2HkCJ_G=hl`MiOFQ$L$9 z?ABIcyUl6zbwuK;Y^0ED!uDDer{gDz(pJEJpBnuK)Jd6J5qhf^;G0l^(~EEv1aO8u zK%;QuY6wIl2N#A0fQu`KFFN%*LlC-a09 zGM1>H4+`xgy8tIMc)$n*A=Cwr^K;#)d)!9@H|Mlv;V#oT%#nsgeklC zL$!ssYqK9dV^|zp3q7#?599!cPQ-D=Z+Mp)qa|ccwMlR6 zwiQE@5PhMSX}fr?b_^3=Ov4hm{&;HD?vrquX}e2VmSpk;5dl)EDpan4-hBctKE}d2 zBKB;R+J;)}&{cWK%a@5(*Eu|AHy0yALkKujf`PqQ!5GluZQCK}Fo7;0xHXNzf9R5d z>lvPhQ!{&mUut~H*w$47GYe`_fEEn}{eiycqumZWeH&2yvzBmWKneDgE5Nb`Z4+s( ze4cdH6Ml!`vbRU`Qq;sCkqP`Qz|ghoe)oLUmmOhLll(y-VxU1#;&gzquFQ)ZkJWXm z{OM1V70Hue=Zrlt{)|9CU(c*3-R$s$qH1g~(9B*Qb!NyihRtpoTN;J+}vl8L3-iPND9ylnYA zuph5FAfwmt1+7T_99_2H+_iBC!ttWDA4=DW2S#eW0!z-YXF}QvM959kHw4S>cb9+B z)n4pc)ly;)<@$ApmH+H(ZS}MqA$A>zBt&JdEF(9YK z5v`S&2_!963^1~WC6xs#{rX{YRpSuLkU3`LZL&;_sBl%D-{MgF=<2#1)i5P_S^P6{ z;KnBH&w;*BCXu-JniuG<`Ga!Vs2pYHbF)s&6U`Unm+Ljq$1&%0iUR1t)Ouf-5gYWj z8atF2p=f&4I2)avy%wkK^_j8#+>!6&obk_1@RztT6LE##dd&sn*b*-k4E6L?Y`zw* zEK`3_)3)f46IFvk+aROPu+t?<#Q~=UJ21c%FYmq1Yz4vK=M_yuTJ9e6Hlz|IN8ULs z^_8Eer*1pC>bf+WR)PmCrdz9^x7jzG&KtxMM~2_|Wx{tq4=4u~&wB=9yL$#69U2GM zq9w@LBP`IgQIwrbD{Vi^HS!%A|ET?bg+R?6F*eDM+&{Gr^)@Y#wS*fmTa5Tvl=L(4 zsBMTRNWFhf^m&!lJ1CneJ7vPEZ$hCS6$AJ1y?$v(6AdYu3C9*>*1>1Y`|j%>?%b<) z?$w7>KXqOrlg7>%6Rcf{?XTj~hxtMDa~PM`bvs32gH+b$#9ZGghD#q+a;?3gZg;Q6 zaDOt>zq|`cj4&l6DZ;{CyLAy1C)av5UUfbmW%%m_)??nJ0(urYRc)Fb(PGHSsm2j@ZMk}u$u!UPM@bfw-@ru)+E4o~r<1K><`I_+|43lho8%QJ}yj$xqL#VM9>TvKoDjYm#q7eao zUebm~b#N=?EPGXD;*&ijjqY#?yzwHuj5BRPI>br1ND z=A^;l7gidHL%lR>k-c6K!&5_eontb5;5 z1?PB@5oLvUFug*TTs%ROR*D8=4klSaAMvrM-o9z00Ldmvt#R3nIHS-l@gN*fy3yr*g&F(0@4e8?Lfpu;*at#>zTr?$s1I8IcU4P0Mao5@-cqP0xxxlgy%Q@N2ZkZP2$F-kZgW8&Yu|-5w8iMr z4Uxv2wMW8=R2ahl{23ehWBMiL@}1;m>zbm`uD$H}X`04PV%NXbU9FmCLuGnhNJTKf zTZ)?Og8W;5h<(;K5!&AR1G?#k3t6$hUxkc}5z^+rtf!TOGQLSshjfGaxx9RMH`_qL z4Ji}w3e4GD0d=|WBx;>U#GfxT&+y$%b2<!{QfLHez`kp zMS9i799cfx9fNh*zK|*x(7-y3bNh$C9ml;Oz7~hQbl&t<=Bvs0Thy&L6~BMEzAsE2 z{`)6s=2>^ykOkw~?@$PHuj%qpLYe^!Se6lD7^jQ2S`MRH#UjZ?C^xhM`Z(O)cN?k3 z`US{LKU?99jraPzuOpb?hMZ|(jo3kpU?ffR!4Jg28TTBo`5{?xDvWPGI{d5NJhE1D z`&MHJj10xkHHoPYcyFmWzT{rZ%f|8r&mTvIA!pAx2Txu;ldx(dMj5t8A|JD;cah&= z5yeK6@!zvxKk!FY&(&C;zV~h}kY0M1$F!5pV9SvqRABPgiUgJnq4}BRyiuOxaACP` zH5pY*))^1mKaD6w#Y7nyIiiP)i9}T&x&JcH2aW{5;gQMe+s|yQZG$4*Ro4mMLREt4^g-tjqLqa#fLJKIM_$>@Y+_0(|v2(DA{I#P&c(;gb?-_KOs|% zG$74eOVQQQZmtW&=|vzFL$Zub4=Yx_{-AC8h}+MdZ;ulm?lXOxUNWu$T%}ngrja8k zE9EvH!x;(YZuE{>@Wu2jL-ypLQ;7I6WJ;P-6p>{(6+v?-*+DpZEgA*sh{TsI0>lt+ zH}e~KV-H9x-{)%7!Gn06T+|PU<$AFzeBnS|4MnR&b~AGW71_>8wXVx z4;B@5Xt4dW=6A;FCiGzM<~oA}g{h+Al6-V6y~p9VKKZYcWTzvgnwJXfy0G1MQC7oL zj324Zf(F}r;SX{ixsx<84E%UdXqPrCNb}#;(863qbn9S(bvDTu{M_}%QbotOmu4&3 zOK3bPi62JTOZ^?oLpU+_Yt`I?x(;KGZ-rCR{M|`?+$S`5Kc;`p#hZ1WbkoS3y#`L+ z;W(fsdtv*tsRSNsV}=@7c4H5o9p%Zu1LJ!pt!>Pw)1uLc*5UD@uo4&a_q2Ze;^Amh z&^L>|gO!0bM-uYZiGZM7wy5+YKG#B-U1V@pTG*jIy;=IQp7y5xis#z+%jd*u>DD6B zUrSVXZV^IC8Bd^(FpA}E&d^=zyk@pe7H}NxGQH#%Y+d!$T;`WZ%5hs#d(O(8AeKeA ze+2$22so5O?eqJ3`z2#_9LMH!SXom&-&+9>xrz!Hbh)7zeP5OfDEKBTL6bLtBgGjy zZB-z%>M7=t4&n{_V+XQJyz#`GlgalNOKOU1XwC9>kFA4M1Q~W!|H}7e$8SkHL98lr`xc=(dhKUf#nv5vEMmKi)i-*jnOH{(fRC-cG4bA@r*ZoI< zo&`frV6IU0O*3jt(5zJN0N!XY{S9m3U&yNAM)uHP)^vr!Op$rf#byrf#$tK(JL9R) z#(kkKaq`F0L9~+7x49QT3GE4?VhXEgYL451da_sAF9^frbHN*)oc9~iEzF;SC1YFs zN8G-wnvgOaMzwR|UDu(phxYlb%2blT?iO&Dkvg3ROSeJww)5341{s$5lya3a#t%i7 zeee3IhCu<7G<7&OY0WULD_ux^M1%1hpQH6@IgG)$RO*ao|W za(hH*sq#~N9cps?4*FmLwTlZ^X5FSV;bTi9d+vJZvqMn~pZfJU!DQD!cCi}oZ`IBB zI|0itW2S`r$M?P&EVNXZr@aCUfLbcr&O7XT3?ZWVU#x!u#D;efQ5Q_S%YPW%(nUxR zP)4-7>wq(g*wx%OkfpM>lheMflCD}v#d1FVk>>AO)!~un@;<0J?;aiui08}CbPwNG z>$qmj2$kkzq{Dya!V%wqcEPGcUB$yVd~ttImn(h`DZhf%uZ|ffl63sA%MX%m0Ic^I zuXN5+Y%eDHHHRXYi^neOx_2<<&mXajG^R$<6jzl1A3aMN7XS$>4+*$?^hL07tM@fR zj4%tGqx6;zM{gw#w4X=jX)D1(1&!>^QWXBOq4p*3O(k$mb0z1Q#DIh}&?HyBIp*CJ zD>c&3AOkL)Psa;RFRQi*2KgTTwB>MzPJGgoQ8e^cgl#EU?|ZEk&jrz$Y{e@q71Ds- zKcom=zG^vW)J%ddKJecw;i^zbG4PcdU<(9ncud<$WqK0SX2Rzc9#~=6z)K}EqeAsD z$|fXrdQ*3X(0OZ&QU_2w47kWt%^|n5e8ob7_geu{J{4lPg7bWTmR=8NwzqT1dCjdD`zVFO9}XB2 z2lS#=`Kntq+K$A$ihP4kbe`NU;o_rv!tbOb#jDy$@&#;iK8>D80jru2uE@LU9ZF{? z0m>~o(w;Q;r4Tk3+%Wfxribl*KWE%YJBaQH1*4HlJdq%^2Fl@nnH)}VLRhVZprbc{ zC7QQ34W8>&bL3AgEwzhWtV?DUZYi?LOf@n_npGMxC&6g}n1Y4Pun$V#r*E3A>n$n< zR(89Kla%b#H?42ZMpddC96D#KkFC(*Drif($bQUku8l3-fC|@l1X6t%%%&QwfP#2& zYKDZIS5LMY+iV*w{=fSf7EI4%hD2rwXpD0GgrYYh-^K@=*f8r@0;3auW!gT|l#P8| zyn>CL$G;mTyYDI9N>R2c3kXBz2b)a)!ka2e+LpG~gRM(vIkkh{s!vSxU|o~Ol`fKu z$Zg_7*_WEKC3H`betqf_QpP5&-$nxMgr$4|Ja)+>$>G%5R2-U+J3)uMBxC4OtkT28 z(xB|SiS^r(YJYB0#AnP)4?gF`)7FsM4Z`9yb{MesK7Lw^cOkvCt1`IpQqCO+Qqny1 zmlbNE#oQo$xDNIw7%+Y>ZNwm}%dG#kdt#)CG3zap!KqQb?xz*ZQ+Gc(n?siLq5_+? z%arnzYElC45+V?_@R(5rXG9BULG#K62V}x7m@nbAE{RHsPLC%VOD#|doZyFl?b4dp zEoNvA|8l#Gms6usR+eA#3r+D`9jIEBT1I2IGnKFAQ(d`j;(gEe8rnq^ISZ@52@kL= zfxRSU6PsU}PDzZRk^!Wi5Ug%*>X?uu$1G=LnrqXY(fnK2l9~jYiEfUFE!t|knAS=*aQ>jQY96h$8nNhpPrAMNcupmLVY8dBjjf{Wdnr- zy5uy4NVpcMyzb$=MGnpj=}W$XaDW_@lZYJPQVUtXN;Jw8?^>-5IPs8K!qoiKixzNB zUUt~W3&WvLoz8@kgYSVNEethN?gB_@hbEF)b5~X#kAkoD3`>IYPHJ8ZDHn)~4W((2 z$Y#(gFA|h;=%8A3VgQ2tLzab%;m}E%pMgoOuDq73w<9{(n_gt`X*yXQRc%t)YtlS? zicCyMYMeQoo?HatTqaN`+u7At9mJZDa|aEdSc9j-Cz4j=5~9<`H}UK23i6lJ`MS&yP6l&s%l2vLzWI|GBV_(iAQYC=2&}=J zeYTzd-Cd&%Tc6H?7-ldhY6~Q779y*IB^wh4d#SGNu6*;`J)cNmAo-e&b)K9>0Tsh9 zeVpdF&+-n0iVfN@0hBOkNz^g|W=J8PAW7597%yLG%}BX3(K7v6EQofE3L2GboY`lY(i_eG^vl0NYa<%Da-;`*HAN*oXQHJDoKIrFc)?2E=+49wB*IB~)inX#NQ^cLUyP+9n6#OI?Ej+TLO9tnn(W>0OR{ z9YG^}NQs&a$7CAIzZzy10eXjaID;#UW$TNRM&C z+$n_wiKUB{nQ}8Q4c0tdh!_ zb;pyi#WnUjWmDUb5bjp7v~*GW${y{w^5Q|>6s6?mC24KpTdZlR*N{pFWdck)B@U^a z4ZC=@u}TUKGDtnh#geV=&Ud#@vJ8nR!IE_Fg@4t0_$mxeQ}99KW+>TZJs^$|M3Nhe zIVZ>~sm%K<)57acu`s7@R?pPMmoA_-ZE+i}KEHCM+Mbe&kMH45)5t;5 z@kejn@K)E)L)gG?Hh0nywCs@v3QDq8d^St9ZwhjKX^V=J_1h1QNZX&ut-mFu*N{y~ z?X}I!zl*Y_^Xs`?L!+TW@wrnwOkD?Oht$^&w3hG!jUz_E#~JW21VwR1ovb6 zUH!=InKMW<;tz8~bmt%_?~js|4!x|ly#WzDoisFJVX+_3TkA#=acLaxX`Fe#yj(JB zDwZ0O;jRpXPAklGG(($_ctu{v%@A6>F4s3$Px{940W+S)mOhkGvEQ8~F|!&-hh|Fo zc{5%H-{6jN_Zx?FdG)DST8~NXY{Yc^#ftsxjf-Iwx?tlOjPZvX+B4~BGaoiiVS+UJ z84uaciDag>-hQpSE%T+bxqc)M7O>&RdhfOYJx;KG4?mTzQjxy*TA?Jk$~B`JN@ zw~y6BJOxdXLnL_c%bX4}=S4%oU(kQ^EmyyV)P;<){gKh+S*i$|S}_}=nJ?G zY`bo?*5zFi@iwlVSI|p;UFCm0a*L)y3?YKl8kbPRE0{m?ay2d6l8W%#fo)0sZb%)4zThLU+BudPme;#QeH z84={;zaFGgpqF=~{B_dEE=$g;$>AgRqkY#k6ZVQ=y)I@2 zoGXoGZ@?2-!w-5-B@5?6B`{^uA)LzXrVoia{OzNzyBVAh`-O$Ud34n^M>WZmbM5}; zch(20zpJ)xd?yNPYvGT&y?Q2heVDPz~&MiUKs2^x* zDVIpzH?{?I+g`tvv&aw-zJOAk!ZFUebjGjU(ME}0V*TO#aHQ|!eIAQ@KoL6yj;9|A z(`r9xvo2cW2od97>5X*33lp28HAqDsltOHG&I1L8jwODU0Kl2mKOIhv+HH6lyjz_Y zLSu}dYzemL+nMRLG687Q>+OYlkDfMru6xEUPkqawA>GX4f(^k z1#NWZjMihl(BW$J_x9zbLA3PBRsI`(2;tZjY8Mm$`EZxkQJ#TS%Ofev7|nPlK6~?> zOZT*pP(J}jHM^Yzc87V^Q^h58HyzZf3#2`jBPL^@GEA5R#`AFZ&GK=y+j;u?j0}ba z5Op2WdIBN;@=U8#DpYT&AhWGa9RU<=oy8++oh! zO+OjuZvy$v(e%(3GAM=j*{0uMZsjwj$0)=cvW^hYOeqe=#`U`D&9ZlOkIoC!)&}ca z@J3ipL5p=r=v>TB2K9nsswk3E;bQW8M2P-6vI zn4tG9%L^0Jq^YlywGuSGewNf$lO63Xn-j#=8}Hd#4R4iTdpED8Um00t9zzijQ!y%; z9zJDgeqjTFF;^+KdLcqUMb>ZLg?3!E0zT{6S~#kLIDKs5{l$Fu=%=U4&TE53v}9V_ zy_D_oC$o>eX1!mZNEWsYJo;Hx8Y=UIgFl`9_E}!WpWN!O^Yw3gLb_vnJdPjuc>8@l zn9D-hzT25>W4FPBwozBffO7!YwZ=3({`7-DR*X5ZUX{8)fSt|92ErINW{AqBE)mYP z!JARdA4;lUR=RLp=eLh3`SXub1@g<>F>|I=zkdFzu_ZTib=y-hRSM+5VGN;8dFhhU zRlcScyYqoIQ5zmn_m{fDNN(67wuX-K($GZ7<>x(rj{ErupP5_v--velE1y?KWVM+J zC*A3B&>~4_YVh$qjS2az0#Lop(!~vOzPU11O+=A9N}`UNW#J<; z8fwDHUuqE1b=nwHZ7gG8rv#zKNCsZq6C>hb7cv5H=RB!xy<8Dus667%RKR#Wo=1O;|BF zSjjPX>KwOIggt;w%h zVwuC$y&P3HEj@DdWJIOkVH2Zt0o~9Kw~WihlBp7rv;7spauSY#!sq%YUnreEbSwq# z`GAOgmM>8S#=>~X;jOQrNxr*jgn^RvcLm5YZuXMi^z!|mqx0EX;mb>slco*J4Q8=| zXOy{o?{b9r9M(em`njC{9IuG=L^&|Q%HorUJl?;~ApFqxg8-aFDCJadd(new admin_setting_configtext('tool_mobile/iosappid', new lang_string('iosappid', 'tool_mobile'), new lang_string('iosappid_desc', 'tool_mobile'), '633359593', PARAM_ALPHANUM)); + $temp->add(new admin_setting_configtext('tool_mobile/androidappid', new lang_string('androidappid', 'tool_mobile'), + new lang_string('androidappid_desc', 'tool_mobile'), 'com.moodle.moodlemobile', PARAM_NOTAGS)); + $ADMIN->add('mobileapp', $temp); // Features related settings. diff --git a/admin/tool/mobile/version.php b/admin/tool/mobile/version.php index c83e26ade4f..4632c5d72a9 100644 --- a/admin/tool/mobile/version.php +++ b/admin/tool/mobile/version.php @@ -23,7 +23,7 @@ */ defined('MOODLE_INTERNAL') || die(); -$plugin->version = 2016120504; // The current plugin version (Date: YYYYMMDDXX). +$plugin->version = 2016120505; // The current plugin version (Date: YYYYMMDDXX). $plugin->requires = 2016112900; // Requires this Moodle version. $plugin->component = 'tool_mobile'; // Full name of the plugin (used for diagnostics). $plugin->dependencies = array(