From aaa23c19c054e01f9f173272988b7f2635d1d3fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Molakvo=C3=A6=20=28skjnldsv=29?= Date: Tue, 7 Jul 2020 15:55:07 +0200 Subject: [PATCH] Import vcf from files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: John Molakvoæ (skjnldsv) --- img/app.png | Bin 689 -> 0 bytes img/contacts.svg | 4 ++ img/favicon-mask.svg | 2 - img/favicon-touch.png | Bin 4127 -> 0 bytes img/favicon-touch.svg | 2 - img/favicon.ico | Bin 4286 -> 0 bytes img/favicon.png | Bin 1095 -> 0 bytes img/favicon.svg | 2 - lib/AppInfo/Application.php | 5 ++ lib/Dav/PatchPlugin.php | 1 - lib/Listener/LoadContactsFilesActions.php | 44 +++++++++++++++ src/components/ContactDetails.vue | 4 +- src/components/ProcessingScreen.vue | 2 +- src/components/Properties/PropertyGroups.vue | 2 +- .../Settings/SettingsImportContacts.vue | 52 +++++++++++++----- src/files_action.js | 38 +++++++++++++ src/router/index.js | 5 ++ templates/main.php | 2 +- webpack.common.js | 24 +++++--- 19 files changed, 155 insertions(+), 34 deletions(-) delete mode 100644 img/app.png create mode 100644 img/contacts.svg delete mode 100644 img/favicon-mask.svg delete mode 100644 img/favicon-touch.png delete mode 100644 img/favicon-touch.svg delete mode 100644 img/favicon.ico delete mode 100644 img/favicon.png delete mode 100644 img/favicon.svg create mode 100644 lib/Listener/LoadContactsFilesActions.php create mode 100644 src/files_action.js diff --git a/img/app.png b/img/app.png deleted file mode 100644 index 8efed047adc8282eb47ef81d10b592245dc1d15a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 689 zcmV;i0#5yjP)JT|X%Yg076xNf5Ct_5EfW8SXR))mt~0Z9ciFoK!wxfV zzwhz=*`0|b(MrS{V51#44@?0c&6ox*0F}bGB{ebzBrV8|7lz}s5jBv4Ex;3CPXX@@ zun+iR+w`SiFG*-efusB%&dUML0eXNd&Rs`nu1i|CgtI@xne~J|k9k)LY>Ov6h885X z8{TRS0@hptY$-VA31=TLXy)$%!k^;3Yr`g>tH9U}^IWV!fRk$zuvB0y-G5nw04LWb zz-M?Jcx~pTMPSBbXb$*g=8u830O#L6X5@~Wi49Pe~M2V8P>fE;azX|-25 zLnj^FQIGR`KIc9GNE*)>>vQlblD=7-uSnWlB*4{%7l8x0^=rUkAj+-(B>CRw@fP?| zSRolTha^o%`t1p+l%(dYq&D+jhool?-qw&5Y?5@pz^M)MlEx%`_He#Rx-IFTPr$i4 zoY#Y=l1?dC7ct5Ay%`t)Zj#i?nRGD*b~i~tiZ0*=a2KdVlAZ(oO%{>jcnoy6$T`5y z7`Te(e_b-F>7g_N_5&j%#Zt|T&JqRO3ON-|0!K;`FdlL-*;SHrfNHA+Yzq-ES)zc4 zp*N!;k^&v!@2R*R2$%&Pn6X&T)vN~?26{=lWIO+M4ZtTemNWAuU;_A%HP*=8a6|A1 X1mZwo2C`JW00000NkvXXu0mjfEN&O; diff --git a/img/contacts.svg b/img/contacts.svg new file mode 100644 index 00000000..b3cf71b8 --- /dev/null +++ b/img/contacts.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/favicon-mask.svg b/img/favicon-mask.svg deleted file mode 100644 index dc63f91b..00000000 --- a/img/favicon-mask.svg +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/img/favicon-touch.png b/img/favicon-touch.png deleted file mode 100644 index 51dad72b40f4f5db8132b2eec5c15447e5c33733..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4127 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 dL2@SP{{gU95fx~wbl3m@002ovPDHLkV1lyq- - diff --git a/img/favicon.ico b/img/favicon.ico deleted file mode 100644 index 90b18c15e16e9e886e27bd066b2f567ee58ca937..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmcgwSxi$w6dlCn!+i;f#zel_x3my86^%h7i^MG$ zaRntr1shPIwJla!mJ}Pd0xert;nC9T+!v>`eedou!0i&`)+Y z!Ef?n9U)nSkexJB5jjjV%H@(SmmJrsNHfh|njuXYv75BHBqwq_?J81`CO+wT)ihNC!UthQidY&Bvdy5JtEib`4+zxZz5eUpoL1=ysFku~K{xK6w z^}dJE_EPA3a}GN0Y!&lG6Xlj&Z%fsFnCN^Cq2Mgfq4di)q6gcDE1=6?&c@=Fo4dYn zHJw{PDW#}gf8#aAFI(#JmO>~L6va_0Ooku*!?}l)QiV2mXrUC>3H1$MQQns%U(1N+FZ7Ggs^p@CRqzNnxa-{Oj&E0l(kzI~B-; zZ8?vf{{B`7_@}KO6UI=g=pQwLsceUU8)Lztf1ngr*3M_w(YQVZTJ;i9Zsa#t?uCGV zTo#Kd1UV1gf7@77PzE_KI1S|>7HhGw&)T@x4Su-}Gm};U9uv&@9AIzF2ji_QelC_r z2Uu6QblX0IzG#i)Tp6EqnE_qZhrm1ZJ&ehDhQa#!Y~KJctj@ozeeC>X6Bns19xesui#ggmK zC&05KQNC!s41Vv8#SQqKU?|zZV;YLr({p|_Rwb&9u@sFPJx8fNQ`z;+DNNIdQqf z{LuaMs3fMnMa|>QPTM4PB0FsLmy+h!sWZXTuZe`=>zsQK@Q#3E=3E1UeldZq{&Ld% zi2t)-CEe%p0MCq>i5_qoE1;uvOBida=badxK-O8lJ8UE7Yo#(v^+BK)QvqM3z}457 z2)FG0TWXB9x(kwbCVU$hN;b;zdnmR>3O^A!p66q_d;C2S*U4pV09)Nfy7w)Ur* J$f=>+{{UC6>WTmW diff --git a/img/favicon.png b/img/favicon.png deleted file mode 100644 index c90bad40f028ee1d2a651d1d2ec381aed7b7242d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1095 zcmV-N1i1T&P)bl+K>h!QC5{g zDG%}Lf(7CskdR6j6?6enQy~>3ida!Z7f1*Sl2HXH*`THZ3e*lEq6!2RE3F#WNu9(d z9*-NpIxHHyaXo&-so`JE+Fyw96`-v9^z z9P+-4z=0YCEh6;@Z|yiJtnB>ce;Yi@Anehvq`hjnohDxGxt+ci8#YPDbR>aiD$J+n z7D!!FOFIkdet{vc4A`m({@m7jjtz7m>4btg@8uW|ojA|p)pV&PWU<=d_qWf-v)nRveX$vVl_r4OX)fx}=8ymg%BhL~=3=GoGyy{K;!Yvu`rNrt@wBei?^jCO zX#$jT%Fa#9DP@C)loWwza_s&F9G2BGg3Ca@13113#kd90#AAT zdGx7kD$ji7C%n>FBFkwW`SLumWJYu0@1~bHS}g#;Y%Ily|DW9b*+7iZi_ttAUr^zV zQ-K2CKs3pd9zW@Ft+*I~0Q9%o+0tOijoo>hk*Dw8SkU=?3KTx7Gcz(v3GK|>th`2K zmvp?cy@40I>*?BP$}?=XOMLNo7a=9Z@rijp@LeIKq%i9X_pr%gpw6fxS^kXHrh zX|gi1*UctN(e9ilIho;)`K#<`)_#@5k{M1+hWY5X5aYAOPfQNr!+{Q7-qui2@U?0z zsPN9uvz+`Z%*|zy%U`y`)j~Z@RyclG?Y7kK^D3_IKF=xw&rvB8MTX27f$ zxvSo+dEBa%)2smiun(hJxm9R^V#vYci)tun8qxVV&HI+9>4sPMxjS?l9uRN(M0dr-x%*R{23 zrLtSR{+FsA`5%J6&0z2Fjh=YO_b`IGALyaVzoiNk1AM3)Ww3V`;9mfFNgwV{z8L@j N002ovPDHLkV1lLO|1AIj diff --git a/img/favicon.svg b/img/favicon.svg deleted file mode 100644 index 009bec74..00000000 --- a/img/favicon.svg +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index a2f3a396..67ef5121 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -23,6 +23,8 @@ namespace OCA\Contacts\AppInfo; use OCA\Contacts\Dav\PatchPlugin; +use OCA\Contacts\Listener\LoadContactsFilesActions; +use OCA\Files\Event\LoadAdditionalScriptsEvent; use OCP\AppFramework\App; use OCP\EventDispatcher\IEventDispatcher; use OCP\SabrePluginEvent; @@ -53,5 +55,8 @@ class Application extends App { $server->addPlugin($this->getContainer()->query(PatchPlugin::class)); } }); + + // Register files action + $eventDispatcher->addServiceListener(LoadAdditionalScriptsEvent::class, LoadContactsFilesActions::class); } } diff --git a/lib/Dav/PatchPlugin.php b/lib/Dav/PatchPlugin.php index 61f36b7a..6ef5fb4d 100644 --- a/lib/Dav/PatchPlugin.php +++ b/lib/Dav/PatchPlugin.php @@ -34,7 +34,6 @@ use Sabre\DAV\Server; use Sabre\DAV\ServerPlugin; use Sabre\HTTP\RequestInterface; use Sabre\HTTP\ResponseInterface; -use Sabre\VObject\Component\VCard; use Sabre\VObject\Reader; class PatchPlugin extends ServerPlugin { diff --git a/lib/Listener/LoadContactsFilesActions.php b/lib/Listener/LoadContactsFilesActions.php new file mode 100644 index 00000000..b60a525c --- /dev/null +++ b/lib/Listener/LoadContactsFilesActions.php @@ -0,0 +1,44 @@ + + * + * @author John Molakvoæ + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace OCA\Contacts\Listener; + +use OCA\Contacts\AppInfo\Application; +use OCA\Files\Event\LoadAdditionalScriptsEvent; +use OCP\EventDispatcher\Event; +use OCP\EventDispatcher\IEventListener; +use OCP\Util; + +class LoadContactsFilesActions implements IEventListener { + public function handle(Event $event): void { + if (!($event instanceof LoadAdditionalScriptsEvent)) { + return; + } + + Util::addStyle(Application::APP_ID, 'icons'); + Util::addScript(Application::APP_ID, 'contacts-files-action'); + } +} diff --git a/src/components/ContactDetails.vue b/src/components/ContactDetails.vue index 0735a3d0..58d68ff6 100644 --- a/src/components/ContactDetails.vue +++ b/src/components/ContactDetails.vue @@ -23,7 +23,7 @@