code beautifications
This commit is contained in:
parent
21af50aa6c
commit
4ce04ab6f9
18
config.php
18
config.php
@ -1,12 +1,10 @@
|
||||
<?php
|
||||
/** Disable the import plugin for all clients */
|
||||
define('PLUGIN_CONTACTIMPORTER_USER_DEFAULT_ENABLE', false);
|
||||
/** Disable the export feature for all clients */
|
||||
define('PLUGIN_CONTACTIMPORTER_USER_DEFAULT_ENABLE_EXPORT', false);
|
||||
|
||||
/** The default addressbook to import to (default: contact)*/
|
||||
define('PLUGIN_CONTACTIMPORTER_DEFAULT', "contact");
|
||||
|
||||
/** Tempory path for uploaded files... */
|
||||
define('PLUGIN_CONTACTIMPORTER_TMP_UPLOAD', "/var/lib/zarafa-webapp/tmp/");
|
||||
/** Disable the import plugin for all clients */
|
||||
define('PLUGIN_CONTACTIMPORTER_USER_DEFAULT_ENABLE', false);
|
||||
|
||||
/** The default addressbook to import to (default: contact)*/
|
||||
define('PLUGIN_CONTACTIMPORTER_DEFAULT', "contact");
|
||||
|
||||
/** Tempory path for uploaded files... */
|
||||
define('PLUGIN_CONTACTIMPORTER_TMP_UPLOAD', "/var/lib/zarafa-webapp/tmp/");
|
||||
?>
|
||||
|
42
js/ABOUT.js
42
js/ABOUT.js
@ -19,7 +19,7 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
Ext.namespace('Zarafa.plugins.contactimporter');
|
||||
|
||||
/**
|
||||
@ -29,30 +29,30 @@ Ext.namespace('Zarafa.plugins.contactimporter');
|
||||
* The copyright string holding the copyright notice for the Zarafa contactimporter Plugin.
|
||||
*/
|
||||
Zarafa.plugins.contactimporter.ABOUT = ""
|
||||
+ "<p>Copyright (C) 2012-2013 Christoph Haas <christoph.h@sprinternet.at></p>"
|
||||
+ "<p>Copyright (C) 2012-2016 Christoph Haas <christoph.h@sprinternet.at></p>"
|
||||
|
||||
+ "<p>This program is free software; you can redistribute it and/or "
|
||||
+ "modify it under the terms of the GNU Lesser General Public "
|
||||
+ "License as published by the Free Software Foundation; either "
|
||||
+ "version 2.1 of the License, or (at your option) any later version.</p>"
|
||||
+ "<p>This program is free software; you can redistribute it and/or "
|
||||
+ "modify it under the terms of the GNU Lesser General Public "
|
||||
+ "License as published by the Free Software Foundation; either "
|
||||
+ "version 2.1 of the License, or (at your option) any later version.</p>"
|
||||
|
||||
+ "<p>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 "
|
||||
+ "Lesser General Public License for more details.</p>"
|
||||
+ "<p>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 "
|
||||
+ "Lesser General Public License for more details.</p>"
|
||||
|
||||
+ "<p>You should have received a copy of the GNU Lesser General Public "
|
||||
+ "License along with this program; if not, write to the Free Software "
|
||||
+ "Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</p>"
|
||||
+ "<p>You should have received a copy of the GNU Lesser General Public "
|
||||
+ "License along with this program; if not, write to the Free Software "
|
||||
+ "Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</p>"
|
||||
|
||||
+ "<hr />"
|
||||
+ "<hr />"
|
||||
|
||||
+ "<p>The contactimporter plugin contains the following third-party components:</p>"
|
||||
|
||||
+ "<h1>vCard-parser</h1>"
|
||||
+ "<p>The contactimporter plugin contains the following third-party components:</p>"
|
||||
|
||||
+ "<p>Copyright (C) 2012 Nuovo</p>"
|
||||
+ "<h1>vCard-parser</h1>"
|
||||
|
||||
+ "<p>Licensed under the MIT License.</p>"
|
||||
|
||||
+ "<p>Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.</p>"
|
||||
+ "<p>Copyright (C) 2016 Jeroen Desloovere</p>"
|
||||
|
||||
+ "<p>Licensed under the MIT License.</p>"
|
||||
|
||||
+ "<p>Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.</p>"
|
@ -2,7 +2,7 @@
|
||||
* ResponseHandler.js zarafa contact im/exporter
|
||||
*
|
||||
* Author: Christoph Haas <christoph.h@sprinternet.at>
|
||||
* Copyright (C) 2012-2013 Christoph Haas
|
||||
* Copyright (C) 2012-2016 Christoph Haas
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@ -19,7 +19,7 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* ResponseHandler
|
||||
*
|
||||
@ -38,21 +38,13 @@ Zarafa.plugins.contactimporter.data.ResponseHandler = Ext.extend(Zarafa.core.dat
|
||||
* @cfg {Function} successCallback The function which
|
||||
* will be called after success request.
|
||||
*/
|
||||
successCallback : null,
|
||||
|
||||
successCallback: null,
|
||||
|
||||
/**
|
||||
* Call the successCallback callback function.
|
||||
* @param {Object} response Object contained the response data.
|
||||
*/
|
||||
doLoad : function(response) {
|
||||
this.successCallback(response);
|
||||
},
|
||||
|
||||
/**
|
||||
* Call the successCallback callback function.
|
||||
* @param {Object} response Object contained the response data.
|
||||
*/
|
||||
doImport : function(response) {
|
||||
doLoad: function (response) {
|
||||
this.successCallback(response);
|
||||
},
|
||||
|
||||
@ -60,24 +52,32 @@ Zarafa.plugins.contactimporter.data.ResponseHandler = Ext.extend(Zarafa.core.dat
|
||||
* Call the successCallback callback function.
|
||||
* @param {Object} response Object contained the response data.
|
||||
*/
|
||||
doExport : function(response) {
|
||||
doImport: function (response) {
|
||||
this.successCallback(response);
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Call the successCallback callback function.
|
||||
* @param {Object} response Object contained the response data.
|
||||
*/
|
||||
doImportattachment : function(response) {
|
||||
doExport: function (response) {
|
||||
this.successCallback(response);
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Call the successCallback callback function.
|
||||
* @param {Object} response Object contained the response data.
|
||||
*/
|
||||
doImportattachment: function (response) {
|
||||
this.successCallback(response);
|
||||
},
|
||||
|
||||
/**
|
||||
* In case exception happened on server, server will return
|
||||
* exception response with the code of exception.
|
||||
* @param {Object} response Object contained the response data.
|
||||
*/
|
||||
doError: function(response) {
|
||||
doError: function (response) {
|
||||
alert("error response code: " + response.error.info.code);
|
||||
}
|
||||
});
|
||||
|
@ -2,7 +2,7 @@
|
||||
* ImportContentPanel.js zarafa contact to vcf im/exporter
|
||||
*
|
||||
* Author: Christoph Haas <christoph.h@sprinternet.at>
|
||||
* Copyright (C) 2012-2013 Christoph Haas
|
||||
* Copyright (C) 2012-2016 Christoph Haas
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@ -19,13 +19,13 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* ImportContentPanel
|
||||
*
|
||||
* Container for the importpanel.
|
||||
*/
|
||||
Ext.namespace("Zarafa.plugins.contactimporter.dialogs");
|
||||
Ext.namespace("Zarafa.plugins.contactimporter.dialogs");
|
||||
|
||||
/**
|
||||
* @class Zarafa.plugins.contactimporter.dialogs.ImportContentPanel
|
||||
@ -40,23 +40,20 @@ Zarafa.plugins.contactimporter.dialogs.ImportContentPanel = Ext.extend(Zarafa.co
|
||||
* @constructor
|
||||
* @param config Configuration structure
|
||||
*/
|
||||
constructor : function(config) {
|
||||
constructor: function (config) {
|
||||
config = config || {};
|
||||
var title = _('Import Contacts');
|
||||
if(container.getSettingsModel().get("zarafa/v1/plugins/contactimporter/enable_export")){
|
||||
title = _('Import/Export Contacts');
|
||||
}
|
||||
Ext.applyIf(config, {
|
||||
layout : 'fit',
|
||||
title : title,
|
||||
closeOnSave : true,
|
||||
width : 620,
|
||||
height : 465,
|
||||
layout : 'fit',
|
||||
title : title,
|
||||
closeOnSave: true,
|
||||
width : 620,
|
||||
height : 465,
|
||||
//Add panel
|
||||
items : [
|
||||
items : [
|
||||
{
|
||||
xtype : 'contactimporter.importcontactpanel',
|
||||
filename : config.filename
|
||||
xtype : 'contactimporter.importcontactpanel',
|
||||
filename: config.filename
|
||||
}
|
||||
]
|
||||
});
|
||||
@ -66,4 +63,4 @@ Zarafa.plugins.contactimporter.dialogs.ImportContentPanel = Ext.extend(Zarafa.co
|
||||
|
||||
});
|
||||
|
||||
Ext.reg('contactimporter.contentpanel' ,Zarafa.plugins.contactimporter.dialogs.ImportContentPanel);
|
||||
Ext.reg('contactimporter.contentpanel', Zarafa.plugins.contactimporter.dialogs.ImportContentPanel);
|
@ -2,7 +2,7 @@
|
||||
* ImportPanel.js zarafa contact to vcf im/exporter
|
||||
*
|
||||
* Author: Christoph Haas <christoph.h@sprinternet.at>
|
||||
* Copyright (C) 2012-2013 Christoph Haas
|
||||
* Copyright (C) 2012-2016 Christoph Haas
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@ -13,7 +13,7 @@
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
@ -25,7 +25,7 @@
|
||||
*
|
||||
* The main Panel of the contactimporter plugin.
|
||||
*/
|
||||
Ext.namespace("Zarafa.plugins.contactimporter.dialogs");
|
||||
Ext.namespace("Zarafa.plugins.contactimporter.dialogs");
|
||||
|
||||
/**
|
||||
* @class Zarafa.plugins.contactimporter.dialogs.ImportPanel
|
||||
@ -35,22 +35,22 @@ Zarafa.plugins.contactimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
|
||||
|
||||
/* path to vcf file on server... */
|
||||
vcffile: null,
|
||||
|
||||
|
||||
/* The store for the selection grid */
|
||||
store: null,
|
||||
store : null,
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @param {object} config
|
||||
*/
|
||||
constructor : function (config) {
|
||||
constructor: function (config) {
|
||||
config = config || {};
|
||||
var self = this;
|
||||
|
||||
if(!Ext.isEmpty(config.filename)) {
|
||||
|
||||
if (!Ext.isEmpty(config.filename)) {
|
||||
this.vcffile = config.filename;
|
||||
}
|
||||
|
||||
|
||||
// create the data store
|
||||
// we only display the firstname, lastname, homephone and primary email address in our grid
|
||||
this.store = new Ext.data.ArrayStore({
|
||||
@ -62,42 +62,42 @@ Zarafa.plugins.contactimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
|
||||
{name: 'record'}
|
||||
]
|
||||
});
|
||||
|
||||
|
||||
Ext.apply(config, {
|
||||
xtype : 'contactimporter.importpanel',
|
||||
ref : "importcontactpanel",
|
||||
layout : {
|
||||
type : 'form',
|
||||
align : 'stretch'
|
||||
xtype : 'contactimporter.importpanel',
|
||||
ref : "importcontactpanel",
|
||||
layout : {
|
||||
type : 'form',
|
||||
align: 'stretch'
|
||||
},
|
||||
anchor : '100%',
|
||||
bodyStyle : 'background-color: inherit;',
|
||||
defaults : {
|
||||
border : true,
|
||||
bodyStyle : 'background-color: inherit; padding: 3px 0px 3px 0px; border-style: none none solid none;'
|
||||
anchor : '100%',
|
||||
bodyStyle: 'background-color: inherit;',
|
||||
defaults : {
|
||||
border : true,
|
||||
bodyStyle: 'background-color: inherit; padding: 3px 0px 3px 0px; border-style: none none solid none;'
|
||||
},
|
||||
items : [
|
||||
items : [
|
||||
this.createSelectBox(),
|
||||
this.initForm(),
|
||||
this.createGrid()
|
||||
],
|
||||
buttons: [
|
||||
buttons : [
|
||||
this.createSubmitAllButton(),
|
||||
this.createSubmitButton(),
|
||||
this.createCancelButton()
|
||||
],
|
||||
],
|
||||
listeners: {
|
||||
afterrender: function (cmp) {
|
||||
this.loadMask = new Ext.LoadMask(this.getEl(), {msg:'Loading...'});
|
||||
|
||||
if(this.vcffile != null) { // if we have got the filename from an attachment
|
||||
this.loadMask = new Ext.LoadMask(this.getEl(), {msg: 'Loading...'});
|
||||
|
||||
if (this.vcffile != null) { // if we have got the filename from an attachment
|
||||
this.parseContacts(this.vcffile);
|
||||
}
|
||||
},
|
||||
scope: this
|
||||
scope : this
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Zarafa.plugins.contactimporter.dialogs.ImportPanel.superclass.constructor.call(this, config);
|
||||
},
|
||||
|
||||
@ -106,22 +106,22 @@ Zarafa.plugins.contactimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
|
||||
* posted and contains the attachments
|
||||
* @private
|
||||
*/
|
||||
initForm : function () {
|
||||
initForm: function () {
|
||||
return {
|
||||
xtype: 'form',
|
||||
ref: 'addContactFormPanel',
|
||||
layout : 'column',
|
||||
xtype : 'form',
|
||||
ref : 'addContactFormPanel',
|
||||
layout : 'column',
|
||||
fileUpload: true,
|
||||
autoWidth: true,
|
||||
autoWidth : true,
|
||||
autoHeight: true,
|
||||
border: false,
|
||||
bodyStyle: 'padding: 5px;',
|
||||
defaults: {
|
||||
anchor: '95%',
|
||||
border: false,
|
||||
border : false,
|
||||
bodyStyle : 'padding: 5px;',
|
||||
defaults : {
|
||||
anchor : '95%',
|
||||
border : false,
|
||||
bodyStyle: 'padding: 5px;'
|
||||
},
|
||||
items: [this.createUploadField()]
|
||||
items : [this.createUploadField()]
|
||||
};
|
||||
},
|
||||
|
||||
@ -129,14 +129,14 @@ Zarafa.plugins.contactimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
|
||||
* Reloads the data of the grid
|
||||
* @private
|
||||
*/
|
||||
reloadGridStore: function(contactdata) {
|
||||
reloadGridStore: function (contactdata) {
|
||||
var parsedData = [];
|
||||
|
||||
if(contactdata) {
|
||||
|
||||
if (contactdata) {
|
||||
parsedData = new Array(contactdata.contacts.length);
|
||||
var i = 0;
|
||||
for(i = 0; i < contactdata.contacts.length; i++) {
|
||||
|
||||
for (i = 0; i < contactdata.contacts.length; i++) {
|
||||
|
||||
parsedData[i] = [
|
||||
contactdata.contacts[i]["display_name"],
|
||||
contactdata.contacts[i]["given_name"],
|
||||
@ -151,63 +151,63 @@ Zarafa.plugins.contactimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
|
||||
|
||||
this.store.loadData(parsedData, false);
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Init embedded form, this is the form that is
|
||||
* posted and contains the attachments
|
||||
* @private
|
||||
*/
|
||||
createGrid : function() {
|
||||
createGrid: function () {
|
||||
return {
|
||||
xtype: 'grid',
|
||||
ref: 'contactGrid',
|
||||
xtype : 'grid',
|
||||
ref : 'contactGrid',
|
||||
columnWidth: 1.0,
|
||||
store: this.store,
|
||||
width: '100%',
|
||||
height: 300,
|
||||
title: 'Select contacts to import',
|
||||
frame: false,
|
||||
viewConfig:{
|
||||
forceFit:true
|
||||
store : this.store,
|
||||
width : '100%',
|
||||
height : 300,
|
||||
title : 'Select contacts to import',
|
||||
frame : false,
|
||||
viewConfig : {
|
||||
forceFit: true
|
||||
},
|
||||
colModel: new Ext.grid.ColumnModel({
|
||||
colModel : new Ext.grid.ColumnModel({
|
||||
defaults: {
|
||||
width: 300,
|
||||
width : 300,
|
||||
sortable: true
|
||||
},
|
||||
columns: [
|
||||
columns : [
|
||||
{id: 'Displayname', header: 'Displayname', width: 350, sortable: true, dataIndex: 'display_name'},
|
||||
{header: 'Firstname', width: 200, sortable: true, dataIndex: 'given_name'},
|
||||
{header: 'Lastname', width: 200, sortable: true, dataIndex: 'surname'},
|
||||
{header: 'Company', sortable: true, dataIndex: 'company_name'}
|
||||
]
|
||||
}),
|
||||
sm: new Ext.grid.RowSelectionModel({multiSelect:true})
|
||||
sm : new Ext.grid.RowSelectionModel({multiSelect: true})
|
||||
}
|
||||
},
|
||||
|
||||
createSelectBox: function() {
|
||||
|
||||
createSelectBox: function () {
|
||||
var defaultFolder = container.getHierarchyStore().getDefaultFolder('contact'); // @type: Zarafa.hierarchy.data.MAPIFolderRecord
|
||||
var subFolders = defaultFolder.getChildren();
|
||||
var myStore = [];
|
||||
|
||||
|
||||
/* add all local contact folders */
|
||||
var i = 0;
|
||||
myStore.push([defaultFolder.getDefaultFolderKey(), defaultFolder.getDisplayName()]);
|
||||
for(i = 0; i < subFolders.length; i++) {
|
||||
for (i = 0; i < subFolders.length; i++) {
|
||||
/* Store all subfolders */
|
||||
myStore.push([subFolders[i].getDisplayName(), subFolders[i].getDisplayName(), false]); // 3rd field = isPublicfolder
|
||||
}
|
||||
|
||||
|
||||
/* add all shared contact folders */
|
||||
var pubStore = container.getHierarchyStore().getPublicStore();
|
||||
|
||||
if(typeof pubStore !== "undefined") {
|
||||
|
||||
if (typeof pubStore !== "undefined") {
|
||||
try {
|
||||
var pubFolder = pubStore.getDefaultFolder("publicfolders");
|
||||
var pubSubFolders = pubFolder.getChildren();
|
||||
for(i = 0; i < pubSubFolders.length; i++) {
|
||||
if(pubSubFolders[i].isContainerClass("IPF.Contact")){
|
||||
for (i = 0; i < pubSubFolders.length; i++) {
|
||||
if (pubSubFolders[i].isContainerClass("IPF.Contact")) {
|
||||
myStore.push([pubSubFolders[i].getDisplayName(), pubSubFolders[i].getDisplayName() + " [Shared]", true]); // 3rd field = isPublicfolder
|
||||
}
|
||||
}
|
||||
@ -216,128 +216,128 @@ Zarafa.plugins.contactimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
|
||||
console.log(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return {
|
||||
xtype: "selectbox",
|
||||
ref: 'addressbookSelector',
|
||||
editable: false,
|
||||
name: "choosen_addressbook",
|
||||
value: container.getSettingsModel().get("zarafa/v1/plugins/contactimporter/default_addressbook"),
|
||||
width: 100,
|
||||
fieldLabel: "Select an addressbook",
|
||||
store: myStore,
|
||||
mode: 'local',
|
||||
xtype : "selectbox",
|
||||
ref : 'addressbookSelector',
|
||||
editable : false,
|
||||
name : "choosen_addressbook",
|
||||
value : container.getSettingsModel().get("zarafa/v1/plugins/contactimporter/default_addressbook"),
|
||||
width : 100,
|
||||
fieldLabel : "Select an addressbook",
|
||||
store : myStore,
|
||||
mode : 'local',
|
||||
labelSeperator: ":",
|
||||
border: false,
|
||||
anchor: "100%",
|
||||
scope: this,
|
||||
allowBlank: false
|
||||
border : false,
|
||||
anchor : "100%",
|
||||
scope : this,
|
||||
allowBlank : false
|
||||
}
|
||||
},
|
||||
|
||||
createUploadField: function() {
|
||||
|
||||
createUploadField: function () {
|
||||
return {
|
||||
xtype: "fileuploadfield",
|
||||
ref: 'contactfileuploadfield',
|
||||
xtype : "fileuploadfield",
|
||||
ref : 'contactfileuploadfield',
|
||||
columnWidth: 1.0,
|
||||
id: 'form-file',
|
||||
name: 'vcfdata',
|
||||
emptyText: 'Select an .vcf addressbook',
|
||||
border: false,
|
||||
anchor: "100%",
|
||||
scope: this,
|
||||
allowBlank: false,
|
||||
listeners: {
|
||||
id : 'form-file',
|
||||
name : 'vcfdata',
|
||||
emptyText : 'Select an .vcf addressbook',
|
||||
border : false,
|
||||
anchor : "100%",
|
||||
scope : this,
|
||||
allowBlank : false,
|
||||
listeners : {
|
||||
'fileselected': this.onFileSelected,
|
||||
scope: this
|
||||
scope : this
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
createSubmitButton: function() {
|
||||
|
||||
createSubmitButton: function () {
|
||||
return {
|
||||
xtype: "button",
|
||||
ref: "../submitButton",
|
||||
disabled: true,
|
||||
width: 100,
|
||||
border: false,
|
||||
text: _("Import"),
|
||||
anchor: "100%",
|
||||
handler: this.importCheckedContacts,
|
||||
scope: this,
|
||||
xtype : "button",
|
||||
ref : "../submitButton",
|
||||
disabled : true,
|
||||
width : 100,
|
||||
border : false,
|
||||
text : _("Import"),
|
||||
anchor : "100%",
|
||||
handler : this.importCheckedContacts,
|
||||
scope : this,
|
||||
allowBlank: false
|
||||
}
|
||||
},
|
||||
|
||||
createSubmitAllButton: function() {
|
||||
|
||||
createSubmitAllButton: function () {
|
||||
return {
|
||||
xtype: "button",
|
||||
ref: "../submitAllButton",
|
||||
disabled: true,
|
||||
width: 100,
|
||||
border: false,
|
||||
text: _("Import All"),
|
||||
anchor: "100%",
|
||||
handler: this.importAllContacts,
|
||||
scope: this,
|
||||
xtype : "button",
|
||||
ref : "../submitAllButton",
|
||||
disabled : true,
|
||||
width : 100,
|
||||
border : false,
|
||||
text : _("Import All"),
|
||||
anchor : "100%",
|
||||
handler : this.importAllContacts,
|
||||
scope : this,
|
||||
allowBlank: false
|
||||
}
|
||||
},
|
||||
|
||||
createCancelButton: function() {
|
||||
|
||||
createCancelButton: function () {
|
||||
return {
|
||||
xtype: "button",
|
||||
width: 100,
|
||||
border: false,
|
||||
text: _("Cancel"),
|
||||
anchor: "100%",
|
||||
handler: this.close,
|
||||
scope: this,
|
||||
xtype : "button",
|
||||
width : 100,
|
||||
border : false,
|
||||
text : _("Cancel"),
|
||||
anchor : "100%",
|
||||
handler : this.close,
|
||||
scope : this,
|
||||
allowBlank: false
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* This is called when a file has been seleceted in the file dialog
|
||||
* in the {@link Ext.ux.form.FileUploadField} and the dialog is closed
|
||||
* @param {Ext.ux.form.FileUploadField} uploadField being added a file to
|
||||
*/
|
||||
onFileSelected : function(uploadField) {
|
||||
onFileSelected: function (uploadField) {
|
||||
var form = this.addContactFormPanel.getForm();
|
||||
|
||||
if (form.isValid()) {
|
||||
form.submit({
|
||||
waitMsg: 'Uploading and parsing contacts...',
|
||||
url: 'plugins/contactimporter/php/upload.php',
|
||||
failure: function(file, action) {
|
||||
url : 'plugins/contactimporter/php/upload.php',
|
||||
failure: function (file, action) {
|
||||
this.submitButton.disable();
|
||||
this.submitAllButton.disable();
|
||||
Zarafa.common.dialogs.MessageBox.show({
|
||||
title : _('Error'),
|
||||
msg : _(action.result.error),
|
||||
icon : Zarafa.common.dialogs.MessageBox.ERROR,
|
||||
buttons : Zarafa.common.dialogs.MessageBox.OK
|
||||
title : _('Error'),
|
||||
msg : _(action.result.error),
|
||||
icon : Zarafa.common.dialogs.MessageBox.ERROR,
|
||||
buttons: Zarafa.common.dialogs.MessageBox.OK
|
||||
});
|
||||
},
|
||||
success: function(file, action){
|
||||
success: function (file, action) {
|
||||
uploadField.reset();
|
||||
this.vcffile = action.result.vcf_file;
|
||||
|
||||
|
||||
this.parseContacts(this.vcffile);
|
||||
},
|
||||
scope : this
|
||||
scope : this
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
parseContacts: function (vcfPath) {
|
||||
this.loadMask.show();
|
||||
|
||||
|
||||
// call export function here!
|
||||
var responseHandler = new Zarafa.plugins.contactimporter.data.ResponseHandler({
|
||||
successCallback: this.handleParsingResult.createDelegate(this)
|
||||
});
|
||||
|
||||
|
||||
container.getRequest().singleRequest(
|
||||
'contactmodule',
|
||||
'load',
|
||||
@ -347,23 +347,23 @@ Zarafa.plugins.contactimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
|
||||
responseHandler
|
||||
);
|
||||
},
|
||||
|
||||
handleParsingResult: function(response) {
|
||||
|
||||
handleParsingResult: function (response) {
|
||||
this.loadMask.hide();
|
||||
|
||||
if(response["status"] == true) {
|
||||
|
||||
if (response["status"] == true) {
|
||||
this.submitButton.enable();
|
||||
this.submitAllButton.enable();
|
||||
|
||||
|
||||
this.reloadGridStore(response.parsed);
|
||||
} else {
|
||||
this.submitButton.disable();
|
||||
this.submitAllButton.disable();
|
||||
Zarafa.common.dialogs.MessageBox.show({
|
||||
title : _('Parser Error'),
|
||||
msg : _(response["message"]),
|
||||
icon : Zarafa.common.dialogs.MessageBox.ERROR,
|
||||
buttons : Zarafa.common.dialogs.MessageBox.OK
|
||||
title : _('Parser Error'),
|
||||
msg : _(response["message"]),
|
||||
icon : Zarafa.common.dialogs.MessageBox.ERROR,
|
||||
buttons: Zarafa.common.dialogs.MessageBox.OK
|
||||
});
|
||||
}
|
||||
},
|
||||
@ -376,117 +376,117 @@ Zarafa.plugins.contactimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
|
||||
importCheckedContacts: function () {
|
||||
var newRecords = this.contactGrid.selModel.getSelections();
|
||||
this.importContacts(newRecords);
|
||||
},
|
||||
},
|
||||
|
||||
importAllContacts: function () {
|
||||
//receive Records from grid rows
|
||||
this.contactGrid.selModel.selectAll(); // select all entries
|
||||
var newRecords = this.contactGrid.selModel.getSelections();
|
||||
this.importContacts(newRecords);
|
||||
},
|
||||
|
||||
/**
|
||||
* This function stores all given events to the appointmentstore
|
||||
},
|
||||
|
||||
/**
|
||||
* This function stores all given events to the appointmentstore
|
||||
* @param events
|
||||
*/
|
||||
importContacts: function (contacts) {
|
||||
//receive existing contact store
|
||||
var folderValue = this.addressbookSelector.getValue();
|
||||
|
||||
if(folderValue == undefined) { // no addressbook choosen
|
||||
if (folderValue == undefined) { // no addressbook choosen
|
||||
Zarafa.common.dialogs.MessageBox.show({
|
||||
title : _('Error'),
|
||||
msg : _('You have to choose an addressbook!'),
|
||||
icon : Zarafa.common.dialogs.MessageBox.ERROR,
|
||||
buttons : Zarafa.common.dialogs.MessageBox.OK
|
||||
title : _('Error'),
|
||||
msg : _('You have to choose an addressbook!'),
|
||||
icon : Zarafa.common.dialogs.MessageBox.ERROR,
|
||||
buttons: Zarafa.common.dialogs.MessageBox.OK
|
||||
});
|
||||
} else {
|
||||
var addressbookexist = true;
|
||||
if(this.contactGrid.selModel.getCount() < 1) {
|
||||
if (this.contactGrid.selModel.getCount() < 1) {
|
||||
Zarafa.common.dialogs.MessageBox.show({
|
||||
title : _('Error'),
|
||||
msg : _('You have to choose at least one contact to import!'),
|
||||
icon : Zarafa.common.dialogs.MessageBox.ERROR,
|
||||
buttons : Zarafa.common.dialogs.MessageBox.OK
|
||||
title : _('Error'),
|
||||
msg : _('You have to choose at least one contact to import!'),
|
||||
icon : Zarafa.common.dialogs.MessageBox.ERROR,
|
||||
buttons: Zarafa.common.dialogs.MessageBox.OK
|
||||
});
|
||||
} else {
|
||||
var contactStore = new Zarafa.contact.ContactStore();
|
||||
var contactFolder = container.getHierarchyStore().getDefaultFolder('contact');
|
||||
var contactFolder = container.getHierarchyStore().getDefaultFolder('contact');
|
||||
var pubStore = container.getHierarchyStore().getPublicStore();
|
||||
var pubFolder = pubStore.getDefaultFolder("publicfolders");
|
||||
var pubSubFolders = pubFolder.getChildren();
|
||||
|
||||
if(folderValue != "contact") {
|
||||
|
||||
if (folderValue != "contact") {
|
||||
var subFolders = contactFolder.getChildren();
|
||||
var i = 0;
|
||||
for(i = 0; i < pubSubFolders.length; i++) {
|
||||
if(pubSubFolders[i].isContainerClass("IPF.Contact")){
|
||||
for (i = 0; i < pubSubFolders.length; i++) {
|
||||
if (pubSubFolders[i].isContainerClass("IPF.Contact")) {
|
||||
subFolders.push(pubSubFolders[i]);
|
||||
}
|
||||
}
|
||||
for(i=0;i<subFolders.length;i++) {
|
||||
for (i = 0; i < subFolders.length; i++) {
|
||||
// look up right folder
|
||||
// TODO: improve!!
|
||||
if(subFolders[i].getDisplayName() == folderValue) {
|
||||
if (subFolders[i].getDisplayName() == folderValue) {
|
||||
contactFolder = subFolders[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(contactFolder.isDefaultFolder()) {
|
||||
|
||||
if (contactFolder.isDefaultFolder()) {
|
||||
Zarafa.common.dialogs.MessageBox.show({
|
||||
title : _('Error'),
|
||||
msg : _('Selected addressbook does not exist!'),
|
||||
icon : Zarafa.common.dialogs.MessageBox.ERROR,
|
||||
buttons : Zarafa.common.dialogs.MessageBox.OK
|
||||
title : _('Error'),
|
||||
msg : _('Selected addressbook does not exist!'),
|
||||
icon : Zarafa.common.dialogs.MessageBox.ERROR,
|
||||
buttons: Zarafa.common.dialogs.MessageBox.OK
|
||||
});
|
||||
addressbookexist = false;
|
||||
}
|
||||
}
|
||||
|
||||
if(addressbookexist) {
|
||||
if (addressbookexist) {
|
||||
this.loadMask.show();
|
||||
var uids = [];
|
||||
var store_entryid = "";
|
||||
|
||||
|
||||
//receive Records from grid rows
|
||||
Ext.each(contacts, function(newRecord) {
|
||||
uids.push(newRecord.data.record.internal_fields.contact_uid);
|
||||
Ext.each(contacts, function (newRecord) {
|
||||
uids.push(newRecord.data.record.internal_fields.contact_uid);
|
||||
}, this);
|
||||
store_entryid = contactFolder.get('store_entryid');
|
||||
|
||||
|
||||
var responseHandler = new Zarafa.plugins.contactimporter.data.ResponseHandler({
|
||||
successCallback: this.importContactsDone.createDelegate(this)
|
||||
});
|
||||
|
||||
|
||||
container.getRequest().singleRequest(
|
||||
'contactmodule',
|
||||
'import',
|
||||
{
|
||||
storeid: contactFolder.get("store_entryid"),
|
||||
folderid: contactFolder.get("entryid"),
|
||||
uids: uids,
|
||||
storeid : contactFolder.get("store_entryid"),
|
||||
folderid : contactFolder.get("entryid"),
|
||||
uids : uids,
|
||||
vcf_filepath: this.vcffile
|
||||
},
|
||||
responseHandler
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
importContactsDone : function (response) {
|
||||
|
||||
importContactsDone: function (response) {
|
||||
this.loadMask.hide();
|
||||
this.dialog.close();
|
||||
if(response.status == true) {
|
||||
if (response.status == true) {
|
||||
container.getNotifier().notify('info', 'Imported', 'Imported ' + response.count + ' contacts. Please reload your addressbook!');
|
||||
} else {
|
||||
Zarafa.common.dialogs.MessageBox.show({
|
||||
title : _('Error'),
|
||||
msg : _('Import failed: ') + response.message,
|
||||
icon : Zarafa.common.dialogs.MessageBox.ERROR,
|
||||
buttons : Zarafa.common.dialogs.MessageBox.OK
|
||||
title : _('Error'),
|
||||
msg : _('Import failed: ') + response.message,
|
||||
icon : Zarafa.common.dialogs.MessageBox.ERROR,
|
||||
buttons: Zarafa.common.dialogs.MessageBox.OK
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
* plugin.contactimporter.js zarafa contactimporter
|
||||
*
|
||||
* Author: Christoph Haas <christoph.h@sprinternet.at>
|
||||
* Copyright (C) 2012-2013 Christoph Haas
|
||||
* Copyright (C) 2012-2016 Christoph Haas
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@ -19,34 +19,34 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
Ext.namespace("Zarafa.plugins.contactimporter"); // Assign the right namespace
|
||||
|
||||
Zarafa.plugins.contactimporter.ImportPlugin = Ext.extend(Zarafa.core.Plugin, { // create new import plugin
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @param {Object} config Configuration object
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @constructor
|
||||
* @param {Object} config Configuration object
|
||||
*
|
||||
*/
|
||||
constructor: function (config) {
|
||||
config = config || {};
|
||||
|
||||
|
||||
Zarafa.plugins.contactimporter.ImportPlugin.superclass.constructor.call(this, config);
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* initialises insertion point for plugin
|
||||
* @protected
|
||||
*/
|
||||
initPlugin : function() {
|
||||
initPlugin: function () {
|
||||
Zarafa.plugins.contactimporter.ImportPlugin.superclass.initPlugin.apply(this, arguments);
|
||||
|
||||
|
||||
/* our panel */
|
||||
Zarafa.core.data.SharedComponentType.addProperty('plugins.contactimporter.dialogs.importcontacts');
|
||||
|
||||
|
||||
/* directly import received vcfs */
|
||||
this.registerInsertionPoint('common.contextmenu.attachment.actions', this.createAttachmentImportButton);
|
||||
this.registerInsertionPoint('common.contextmenu.attachment.actions', this.createAttachmentImportButton, this);
|
||||
|
||||
/* add import button to south navigation */
|
||||
this.registerInsertionPoint("navigation.south", this.createImportButton, this);
|
||||
@ -54,28 +54,24 @@ Zarafa.plugins.contactimporter.ImportPlugin = Ext.extend(Zarafa.core.Plugin, {
|
||||
/* export a contact via rightclick */
|
||||
this.registerInsertionPoint('context.contact.contextmenu.actions', this.createItemExportInsertionPoint, this);
|
||||
},
|
||||
|
||||
/**
|
||||
* Creates the button
|
||||
*
|
||||
* @return {Object} Configuration object for a {@link Ext.Button button}
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Creates the button
|
||||
*
|
||||
* @return {Object} Configuration object for a {@link Ext.Button button}
|
||||
*
|
||||
*/
|
||||
createImportButton: function () {
|
||||
var button = {
|
||||
xtype : 'button',
|
||||
text : _('Import Contacts'),
|
||||
iconCls : 'icon_contactimporter_button',
|
||||
navigationContext : container.getContextByName('contact'),
|
||||
handler : this.onImportButtonClick,
|
||||
scope : this
|
||||
xtype : 'button',
|
||||
text : _('Import Contacts'),
|
||||
iconCls : 'icon_contactimporter_button',
|
||||
navigationContext: container.getContextByName('contact'),
|
||||
handler : this.onImportButtonClick,
|
||||
scope : this
|
||||
};
|
||||
|
||||
if(container.getSettingsModel().get("zarafa/v1/plugins/contactimporter/enable_export")) {
|
||||
button.text = _('Import/Export Contacts');
|
||||
}
|
||||
|
||||
return button;
|
||||
|
||||
return button;
|
||||
},
|
||||
|
||||
/**
|
||||
@ -94,20 +90,20 @@ Zarafa.plugins.contactimporter.ImportPlugin = Ext.extend(Zarafa.core.Plugin, {
|
||||
};
|
||||
},
|
||||
|
||||
exportToVCF: function(btn) {
|
||||
if(btn.records.length == 0) {
|
||||
exportToVCF: function (btn) {
|
||||
if (btn.records.length == 0) {
|
||||
return; // skip if no records where given!
|
||||
}
|
||||
|
||||
var recordIds = [];
|
||||
|
||||
for(var i=0;i<btn.records.length;i++) {
|
||||
for (var i = 0; i < btn.records.length; i++) {
|
||||
recordIds.push(btn.records[i].get("entryid"));
|
||||
}
|
||||
|
||||
var responseHandler = new Zarafa.plugins.contactimporter.data.ResponseHandler({
|
||||
successCallback: this.downloadVCF,
|
||||
scope: this
|
||||
scope : this
|
||||
});
|
||||
|
||||
// request attachment preperation
|
||||
@ -115,14 +111,14 @@ Zarafa.plugins.contactimporter.ImportPlugin = Ext.extend(Zarafa.core.Plugin, {
|
||||
'contactmodule',
|
||||
'export',
|
||||
{
|
||||
storeid : btn.records[0].get("store_entryid"),
|
||||
storeid: btn.records[0].get("store_entryid"),
|
||||
records: recordIds
|
||||
},
|
||||
responseHandler
|
||||
);
|
||||
},
|
||||
|
||||
downloadVCF: function(response) {
|
||||
downloadVCF: function (response) {
|
||||
var downloadFrame = Ext.getBody().createChild({
|
||||
tag: 'iframe',
|
||||
cls: 'x-hidden'
|
||||
@ -137,22 +133,22 @@ Zarafa.plugins.contactimporter.ImportPlugin = Ext.extend(Zarafa.core.Plugin, {
|
||||
|
||||
downloadFrame.dom.contentWindow.location = link;
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Insert import button in all attachment suggestions
|
||||
|
||||
|
||||
* @return {Object} Configuration object for a {@link Ext.Button button}
|
||||
*/
|
||||
createAttachmentImportButton : function(include, btn) {
|
||||
createAttachmentImportButton: function (include, btn) {
|
||||
return {
|
||||
text : _('Import Contacts'),
|
||||
handler : this.getAttachmentFileName.createDelegate(this, [btn]),
|
||||
scope : this,
|
||||
iconCls : 'icon_contactimporter_button',
|
||||
beforeShow : function(item, record) {
|
||||
text : _('Import Contacts'),
|
||||
handler : this.getAttachmentFileName.createDelegate(this, [btn]),
|
||||
scope : this,
|
||||
iconCls : 'icon_contactimporter_button',
|
||||
beforeShow: function (item, record) {
|
||||
var extension = record.data.name.split('.').pop().toLowerCase();
|
||||
|
||||
if(record.data.filetype == "text/vcard" || record.data.filetype == "text/x-vcard" || extension == "vcf" || extension == "vcard") {
|
||||
|
||||
if (record.data.filetype == "text/vcard" || record.data.filetype == "text/x-vcard" || extension == "vcf" || extension == "vcard") {
|
||||
item.setVisible(true);
|
||||
} else {
|
||||
item.setVisible(false);
|
||||
@ -160,19 +156,19 @@ Zarafa.plugins.contactimporter.ImportPlugin = Ext.extend(Zarafa.core.Plugin, {
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Callback for getAttachmentFileName
|
||||
*/
|
||||
gotAttachmentFileName: function(response) {
|
||||
if(response.status == true) {
|
||||
gotAttachmentFileName: function (response) {
|
||||
if (response.status == true) {
|
||||
this.openImportDialog(response.tmpname);
|
||||
} else {
|
||||
Zarafa.common.dialogs.MessageBox.show({
|
||||
title : _('Error'),
|
||||
msg : _(response["message"]),
|
||||
icon : Zarafa.common.dialogs.MessageBox.ERROR,
|
||||
buttons : Zarafa.common.dialogs.MessageBox.OK
|
||||
title : _('Error'),
|
||||
msg : _(response["message"]),
|
||||
icon : Zarafa.common.dialogs.MessageBox.ERROR,
|
||||
buttons: Zarafa.common.dialogs.MessageBox.OK
|
||||
});
|
||||
}
|
||||
},
|
||||
@ -182,63 +178,64 @@ Zarafa.plugins.contactimporter.ImportPlugin = Ext.extend(Zarafa.core.Plugin, {
|
||||
*/
|
||||
getAttachmentFileName: function (btn) {
|
||||
Zarafa.common.dialogs.MessageBox.show({
|
||||
title: 'Please wait',
|
||||
msg: 'Loading attachment...',
|
||||
title : 'Please wait',
|
||||
msg : 'Loading attachment...',
|
||||
progressText: 'Initializing...',
|
||||
width:300,
|
||||
progress:true,
|
||||
closable:false
|
||||
width : 300,
|
||||
progress : true,
|
||||
closable : false
|
||||
});
|
||||
|
||||
// progress bar... ;)
|
||||
var f = function(v){
|
||||
return function(){
|
||||
if(v == 100){
|
||||
var f = function (v) {
|
||||
return function () {
|
||||
if (v == 100) {
|
||||
Zarafa.common.dialogs.MessageBox.hide();
|
||||
}else{
|
||||
Zarafa.common.dialogs.MessageBox.updateProgress(v/100, Math.round(v)+'% loaded');
|
||||
} else {
|
||||
Zarafa.common.dialogs.MessageBox.updateProgress(v / 100, Math.round(v) + '% loaded');
|
||||
}
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
for(var i = 1; i < 101; i++){
|
||||
setTimeout(f(i), 20*i);
|
||||
|
||||
for (var i = 1; i < 101; i++) {
|
||||
setTimeout(f(i), 20 * i);
|
||||
}
|
||||
|
||||
|
||||
/* store the attachment to a temporary folder and prepare it for uploading */
|
||||
var attachmentRecord = btn.records;
|
||||
var attachmentStore = attachmentRecord.store;
|
||||
|
||||
|
||||
var store = attachmentStore.getParentRecord().get('store_entryid');
|
||||
var entryid = attachmentStore.getAttachmentParentRecordEntryId();
|
||||
var attachNum = new Array(1);
|
||||
if (attachmentRecord.get('attach_num') != -1)
|
||||
if (attachmentRecord.get('attach_num') != -1) {
|
||||
attachNum[0] = attachmentRecord.get('attach_num');
|
||||
else
|
||||
} else {
|
||||
attachNum[0] = attachmentRecord.get('tmpname');
|
||||
}
|
||||
var dialog_attachments = attachmentStore.getId();
|
||||
var filename = attachmentRecord.data.name;
|
||||
|
||||
|
||||
var responseHandler = new Zarafa.plugins.contactimporter.data.ResponseHandler({
|
||||
successCallback: this.gotAttachmentFileName.createDelegate(this),
|
||||
scope: this
|
||||
scope : this
|
||||
});
|
||||
|
||||
|
||||
// request attachment preperation
|
||||
container.getRequest().singleRequest(
|
||||
'contactmodule',
|
||||
'importattachment',
|
||||
{
|
||||
entryid : entryid,
|
||||
store: store,
|
||||
attachNum: attachNum,
|
||||
entryid : entryid,
|
||||
store : store,
|
||||
attachNum : attachNum,
|
||||
dialog_attachments: dialog_attachments,
|
||||
filename: filename
|
||||
filename : filename
|
||||
},
|
||||
responseHandler
|
||||
);
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Clickhandler for the button
|
||||
*/
|
||||
@ -250,8 +247,8 @@ Zarafa.plugins.contactimporter.ImportPlugin = Ext.extend(Zarafa.core.Plugin, {
|
||||
* Open the import dialog.
|
||||
*
|
||||
* @param {String} filename
|
||||
*/
|
||||
openImportDialog: function(filename) {
|
||||
*/
|
||||
openImportDialog: function (filename) {
|
||||
var componentType = Zarafa.core.data.SharedComponentType['plugins.contactimporter.dialogs.importcontacts'];
|
||||
var config = {
|
||||
filename: filename
|
||||
@ -268,9 +265,9 @@ Zarafa.plugins.contactimporter.ImportPlugin = Ext.extend(Zarafa.core.Plugin, {
|
||||
* @param {Ext.data.Record} record Optionally passed record.
|
||||
* @return {Number} The bid for the shared component
|
||||
*/
|
||||
bidSharedComponent : function(type, record) {
|
||||
bidSharedComponent: function (type, record) {
|
||||
var bid = -1;
|
||||
switch(type) {
|
||||
switch (type) {
|
||||
case Zarafa.core.data.SharedComponentType['plugins.contactimporter.dialogs.importcontacts']:
|
||||
bid = 1;
|
||||
break;
|
||||
@ -285,9 +282,9 @@ Zarafa.plugins.contactimporter.ImportPlugin = Ext.extend(Zarafa.core.Plugin, {
|
||||
* @param {Ext.data.Record} record Optionally passed record.
|
||||
* @return {Ext.Component} Component
|
||||
*/
|
||||
getSharedComponent : function(type, record) {
|
||||
getSharedComponent: function (type, record) {
|
||||
var component;
|
||||
switch(type) {
|
||||
switch (type) {
|
||||
case Zarafa.core.data.SharedComponentType['plugins.contactimporter.dialogs.importcontacts']:
|
||||
component = Zarafa.plugins.contactimporter.dialogs.ImportContentPanel;
|
||||
break;
|
||||
@ -301,11 +298,11 @@ Zarafa.plugins.contactimporter.ImportPlugin = Ext.extend(Zarafa.core.Plugin, {
|
||||
/*############################################################################################################################
|
||||
* STARTUP
|
||||
*############################################################################################################################*/
|
||||
Zarafa.onReady(function() {
|
||||
Zarafa.onReady(function () {
|
||||
container.registerPlugin(new Zarafa.core.PluginMetaData({
|
||||
name : 'contactimporter',
|
||||
displayName : _('Contactimporter Plugin'),
|
||||
about : Zarafa.plugins.contactimporter.ABOUT,
|
||||
pluginConstructor : Zarafa.plugins.contactimporter.ImportPlugin
|
||||
name : 'contactimporter',
|
||||
displayName : _('Contactimporter Plugin'),
|
||||
about : Zarafa.plugins.contactimporter.ABOUT,
|
||||
pluginConstructor: Zarafa.plugins.contactimporter.ImportPlugin
|
||||
}));
|
||||
});
|
||||
|
@ -22,7 +22,7 @@
|
||||
<client>
|
||||
<clientfile load="release">js/contactimporter-debug.js</clientfile>
|
||||
<clientfile load="debug">js/contactimporter-debug.js</clientfile>
|
||||
|
||||
|
||||
<clientfile load="source">js/plugin.contactimporter.js</clientfile>
|
||||
<clientfile load="source">js/ABOUT.js</clientfile>
|
||||
<clientfile load="source">js/data/ResponseHandler.js</clientfile>
|
||||
|
@ -1,9 +1,30 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* download.php, zarafa contact to vcf im/exporter
|
||||
*
|
||||
* Author: Christoph Haas <christoph.h@sprinternet.at>
|
||||
* Copyright (C) 2012-2016 Christoph Haas
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
class DownloadHandler
|
||||
{
|
||||
|
||||
public static function doDownload() {
|
||||
public static function doDownload()
|
||||
{
|
||||
if (isset($_GET["token"])) {
|
||||
$token = $_GET["token"];
|
||||
} else {
|
||||
@ -23,7 +44,7 @@ class DownloadHandler
|
||||
|
||||
$file = PLUGIN_CONTACTIMPORTER_TMP_UPLOAD . "vcf_" . $token . ".vcf";
|
||||
|
||||
if(!file_exists($file)) { // invalid token
|
||||
if (!file_exists($file)) { // invalid token
|
||||
return false;
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -3,7 +3,7 @@
|
||||
* plugin.contactimporter.php, zarafa contact to vcf im/exporter
|
||||
*
|
||||
* Author: Christoph Haas <christoph.h@sprinternet.at>
|
||||
* Copyright (C) 2012-2013 Christoph Haas
|
||||
* Copyright (C) 2012-2016 Christoph Haas
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@ -28,18 +28,22 @@ require_once __DIR__ . "/download.php";
|
||||
* With this plugin you can import a vcf file to your zarafa addressbook
|
||||
*
|
||||
*/
|
||||
class Plugincontactimporter extends Plugin {
|
||||
class Plugincontactimporter extends Plugin
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
function Plugincontactimporter() {}
|
||||
function Plugincontactimporter()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Function initializes the Plugin and registers all hooks
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function init() {
|
||||
function init()
|
||||
{
|
||||
$this->registerHook('server.core.settings.init.before');
|
||||
$this->registerHook('server.index.load.custom');
|
||||
}
|
||||
@ -51,8 +55,9 @@ class Plugincontactimporter extends Plugin {
|
||||
* @param mixed $data object(s) related to the hook
|
||||
* @return void
|
||||
*/
|
||||
function execute($eventID, &$data) {
|
||||
switch($eventID) {
|
||||
function execute($eventID, &$data)
|
||||
{
|
||||
switch ($eventID) {
|
||||
case 'server.core.settings.init.before' :
|
||||
$this->injectPluginSettings($data);
|
||||
break;
|
||||
@ -69,15 +74,15 @@ class Plugincontactimporter extends Plugin {
|
||||
* settings.
|
||||
* @param Array $data Reference to the data of the triggered hook
|
||||
*/
|
||||
function injectPluginSettings(&$data) {
|
||||
function injectPluginSettings(&$data)
|
||||
{
|
||||
$data['settingsObj']->addSysAdminDefaults(Array(
|
||||
'zarafa' => Array(
|
||||
'v1' => Array(
|
||||
'plugins' => Array(
|
||||
'contactimporter' => Array(
|
||||
'enable' => PLUGIN_CONTACTIMPORTER_USER_DEFAULT_ENABLE,
|
||||
'enable_export' => PLUGIN_CONTACTIMPORTER_USER_DEFAULT_ENABLE_EXPORT,
|
||||
'default_addressbook' => PLUGIN_CONTACTIMPORTER_DEFAULT
|
||||
'enable' => PLUGIN_CONTACTIMPORTER_USER_DEFAULT_ENABLE,
|
||||
'default_addressbook' => PLUGIN_CONTACTIMPORTER_DEFAULT
|
||||
)
|
||||
)
|
||||
)
|
||||
@ -85,4 +90,5 @@ class Plugincontactimporter extends Plugin {
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
@ -3,7 +3,7 @@
|
||||
* upload.php, zarafa contact to vcf im/exporter
|
||||
*
|
||||
* Author: Christoph Haas <christoph.h@sprinternet.at>
|
||||
* Copyright (C) 2012-2013 Christoph Haas
|
||||
* Copyright (C) 2012-2016 Christoph Haas
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@ -20,17 +20,18 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
require_once("../config.php");
|
||||
|
||||
/* disable error printing - otherwise json communication might break... */
|
||||
ini_set('display_errors', '0');
|
||||
|
||||
/**
|
||||
* respond/echo JSON
|
||||
* @param $arr
|
||||
*/
|
||||
function respondJSON($arr) {
|
||||
/**
|
||||
* respond/echo JSON
|
||||
* @param $arr
|
||||
*/
|
||||
function respondJSON($arr)
|
||||
{
|
||||
echo json_encode($arr);
|
||||
}
|
||||
|
||||
@ -39,11 +40,12 @@ function respondJSON($arr) {
|
||||
* @param $length the lenght of the generated string
|
||||
* @return string a random string
|
||||
*/
|
||||
function randomstring($length = 6) {
|
||||
function randomstring($length = 6)
|
||||
{
|
||||
// $chars - all allowed charakters
|
||||
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
|
||||
|
||||
srand((double)microtime()*1000000);
|
||||
srand((double)microtime() * 1000000);
|
||||
$i = 0;
|
||||
$pass = "";
|
||||
while ($i < $length) {
|
||||
@ -58,15 +60,15 @@ function randomstring($length = 6) {
|
||||
$destpath = PLUGIN_CONTACTIMPORTER_TMP_UPLOAD;
|
||||
$destpath .= $_FILES['vcfdata']['name'] . randomstring();
|
||||
|
||||
if(is_readable ($_FILES['vcfdata']['tmp_name'])) {
|
||||
$result = move_uploaded_file($_FILES['vcfdata']['tmp_name'],$destpath);
|
||||
|
||||
if($result) {
|
||||
respondJSON(array ('success'=>true, 'vcf_file'=>$destpath));
|
||||
if (is_readable($_FILES['vcfdata']['tmp_name'])) {
|
||||
$result = move_uploaded_file($_FILES['vcfdata']['tmp_name'], $destpath);
|
||||
|
||||
if ($result) {
|
||||
respondJSON(array('success' => true, 'vcf_file' => $destpath));
|
||||
} else {
|
||||
respondJSON(array ('success'=>false,'error'=>"File could not be moved to TMP path! Check plugin config and folder permissions!"));
|
||||
respondJSON(array('success' => false, 'error' => "File could not be moved to TMP path! Check plugin config and folder permissions!"));
|
||||
}
|
||||
} else {
|
||||
respondJSON(array ('success'=>false,'error'=>"File could not be read by server, upload error!"));
|
||||
respondJSON(array('success' => false, 'error' => "File could not be read by server, upload error!"));
|
||||
}
|
||||
?>
|
@ -1,12 +1,12 @@
|
||||
.icon_contactimporter_button {
|
||||
background: url(../images/import_icon.png) no-repeat !important;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 18px!important;
|
||||
background: url(../images/import_icon.png) no-repeat !important;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 18px !important;
|
||||
}
|
||||
|
||||
.icon_contactimporter_export {
|
||||
background: url(../images/download.png) no-repeat;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background: url(../images/download.png) no-repeat;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user