Author Topic: Import .CSV Address Book  (Read 44882 times)

Offline ronald

  • Newbie
  • *
  • Posts: 6
Import .CSV Address Book
« on: November 10, 2007, 12:34:31 PM »
Hi users,

I've enjoyed using roundcube for over a year now, and it's been a great tool. If you're like me, with 1000+ contacts, adding contacts manually to an address book was not something I was up for.

So here's a quick patch I've made, to handle .csv uploads, and adding contacts to the database

This patch is based on 0.1rc1 not the newer 0.2 version (released Nov/07). I cannot guarantee it'll work on the new version.

The patch creates a new directory csv_upload in the root of the RC installation - I know this is not common practice, but it makes updating the rest of the program much easier.

I noticed a recent post on here for uploading .csv files server-side and doing one-off address book updates, but here's a glorified version, which will do the following:

  • Handles file upload
  • Checks columns for correct data
  • Adds NEW contacts to the database
  • Old (already inserted) contacts are ignored
  • Interface is all via one additional link on the 'address book' page

Todo:
  • Use RC-approved methods of including files
  • Change add-on's folder structure
  • Secure the uploading of .csv files. Temp files are currently held one at a time, at $_server_root/imported.csv
  • Link to the uploading interface via one of the buttons, as opposed to a static link


If anyone would like to contribute to this little add-on, please let me know. My email address is ...

« Last Edit: February 11, 2021, 07:26:40 PM by ronald »

Offline wormie_dk

  • Newbie
  • *
  • Posts: 4
Re: Import .CSV Address Book
« Reply #1 on: November 11, 2007, 06:42:20 AM »
I tried installing your script on RC2 manually (copied files and modified theme).

As I am on a shared host I modified
uploader.php
$system_temp and $csvTempFile to link to roundcubes temp dir. However when I upload I get this error:
Quote
Warning: move_uploaded_file(/home/***/webmail/temp/import.csv) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/***/public_html/webmail/csv_upload/uploader.php on line 30

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpYS6161' to '/home/***/webmail/temp/import.csv' in /home/***/public_html/webmail/csv_upload/uploader.php on line 30

I tried to look through the code but I cannot figure out where /tmp/phpYS6161 comes from...
Couldn't you include the roundcube configuration and then use the built in temp dir?

Thanks

Offline seansan

  • Jr. Member
  • **
  • Posts: 84
Re: Import .CSV Address Book
« Reply #2 on: November 11, 2007, 06:50:23 AM »

Maybe you can upload this patch to the bugtracker as type PATCH...

Offline ronald

  • Newbie
  • *
  • Posts: 6
Re: Import .CSV Address Book
« Reply #3 on: November 11, 2007, 07:39:09 AM »
Hi there,

Quote from: wormie_dk
I tried installing your script on RC2 manually (copied files and modified theme).

As I am on a shared host I modified
uploader.php
$system_temp and $csvTempFile to link to roundcubes temp dir. However when I upload I get this error:
Quote
Warning: move_uploaded_file(/home/***/webmail/temp/import.csv) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/***/public_html/webmail/csv_upload/uploader.php on line 30

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpYS6161' to '/home/***/webmail/temp/import.csv' in /home/***/public_html/webmail/csv_upload/uploader.php on line 30

I tried to look through the code but I cannot figure out where /tmp/phpYS6161 comes from...
Couldn't you include the roundcube configuration and then use the built in temp dir?

Thanks


You'll see that on line 28 of uploader.php, the /tmp/phpYS6161 comes from
Code: [Select]
ini_get("session.save_path");This variable is set by your web host, and if you wish to use a different directory (shared hosting, for example), you'll need to change this to your RC temp directory. In this case you should change the line
Code: [Select]
$system_temp = ini_get("session.save_path");to
Code: [Select]
$system_temp = "/path/to/your/roundcube/temp";

Quote from: seansan
Maybe you can upload this patch to the bugtracker as type PATCH...

It's a good idea - I'll look at this once the plug-in is a little more developed!

« Last Edit: February 11, 2021, 07:27:10 PM by ronald »

Offline wormie_dk

  • Newbie
  • *
  • Posts: 4
Re: Import .CSV Address Book
« Reply #4 on: November 11, 2007, 08:37:58 AM »
[quoute]
You'll see that on line 28 of uploader.php, the /tmp/phpYS6161 comes from
[/quote]
But I already changed line 28 to:
$system_temp = '/home/***/webmail/temp';

Which I why I wonder where uploader gets the /tmp/phpYS6161 from...

But probably any form submitted with a file parameter gets uploaded to the session dir... Maybe I should try to copy the file instead of moving

EDIT: DOH DOH DOH: I forgot the public_html part of the path... Now that part works but the includes in inseter.php are giinclude/rcube_shared.inc are giving me a hard time. E.g require_once('include/rcube_shared.inc') does not work. Should the csv_upload files be in rcdir/program?

Offline ronald

  • Newbie
  • *
  • Posts: 6
Re: Import .CSV Address Book
« Reply #5 on: November 11, 2007, 09:33:43 AM »
Quote from: wormie_dk
Now that part works but the includes in inseter.php are giinclude/rcube_shared.inc are giving me a hard time. E.g require_once('include/rcube_shared.inc') does not work. Should the csv_upload files be in rcdir/program?

No,

if you applied the patch, as-is, then the csv_upload folder is in the *root* of the RC installation

thus the path for uploader.php is

/path/to/rc/installation/csv_upload/uploader.php

« Last Edit: February 11, 2021, 07:26:09 PM by ronald »

Offline lostmatt

  • Jr. Member
  • **
  • Posts: 14
Re: Import .CSV Address Book
« Reply #6 on: March 14, 2008, 05:19:40 PM »
Any word on this being added into a release?

Offline BlueC

  • Jr. Member
  • **
  • Posts: 25
Re: Import .CSV Address Book
« Reply #7 on: April 06, 2008, 03:40:59 PM »
(Attachment removed - I have created a newer cleaner version with some bug fixes that I will upload shortly)

I have re-written this patch and also updated it for 0.1 final. It is now more fully integrated into the roundcube UI and hopefully slightly cleaner.

It gives you the ability to import address book contacts from a CSV file. The format of the CSV file should be as follows:

Code: [Select]
Name,Email Address
name1,name1@example.com
name2,name2@example.com

In later versions I will make this more flexible, but for now the CSV file you wish to import MUST be of that format (including the header line!).

The following patch applies cleanly against a fresh install of 0.1 final. Note: the new labels only work for en_US localization at the moment.

To install it, copy the patch to your roundcube installation directory, then "cd" to that directory. Then run the following command:

patch -p1 < roundcube_csv_v2.patch.txt

The following five files are patched:

index.php
program/js/app.js
program/localization/en_US/labels.inc
skins/default/addresses.css
skins/default/templates/addressbook.html

And the following two files are created:

program/steps/addressbook/uploadcsv.inc
skins/default/templates/uploadcsv.html

Please give feedback in this thread.

Best
Chris

Offline marcuseide

  • Newbie
  • *
  • Posts: 5
Re: Import .CSV Address Book
« Reply #8 on: April 11, 2008, 08:26:33 AM »
Hi,
This sounds really nice. Many of my users are requesting a feature like this. A few questions though:

1. Do you have some screenshots of how it looks?

2. Does this port to any language, or just en_US? If not, how can I install this patch in another language?

Thanks!
/Marcus

Offline BlueC

  • Jr. Member
  • **
  • Posts: 25
Re: Import .CSV Address Book
« Reply #9 on: April 11, 2008, 08:33:38 AM »
Hi

I will provide some screenshots shortly, I also deleted the attachment above because I have made some big changes recently and I would advise people to use my newer file which I will upload when I get back home.

You could easily port it to any language, it would be a simple case of adding a couple of lines to the relevant file, I'll show you how to do this or you can provide translations that I will include in the patch.

I'll post again soon with the updated version and screenshots.

Chris

Offline BlueC

  • Jr. Member
  • **
  • Posts: 25
Re: Import .CSV Address Book
« Reply #10 on: April 12, 2008, 07:17:42 AM »
Right, here's some screenshots and an updated tarball containing patches for RC 0.1 and RC0.1.1

Read the enclosed readme.txt for installation instructions, but it's basically as simple as

Code: [Select]
patch -p1 < roundcube-import-contacts-0.3-RC<version>.patch
where is either 0.1 or 0.1.1 depending on your RC version.

If you want to add different localizations then just add translations of the following strings to the labels.inc file in the localization that you desire. If anyone can provide translations that I can include then please post them here.

Code: [Select]
$labels['importcontacts'] = 'Import Contacts';
$labels['confirm'] = 'Confirm';
$labels['confirmimportcsv'] = 'This is a sample set of the data you uploaded. Please confirm that the headers correspond to the correct columns and press Confirm. If they don\'t then please press cancel, change your file, and re-upload it.';
$labels['instructimportcsv'] = 'Use the form below to import contacts from a CSV file.';

Enjoy!
Chris

Offline pagedeveloping

  • Newbie
  • *
  • Posts: 2
Re: Import .CSV Address Book
« Reply #11 on: April 12, 2008, 01:50:46 PM »
Hello,

This is a greate plugin thank you. I have patched the stable version and all works well within firefox.
On IE7 the icon is faded out and will not allow you to use the import function. Could this perhaps be something inside the .css file that IE7 is unable to recognize?

Regards,

Offline BlueC

  • Jr. Member
  • **
  • Posts: 25
Re: Import .CSV Address Book
« Reply #12 on: April 12, 2008, 02:35:36 PM »
Hi, thanks for testing it and for the feedback

I had not thought to test it outside of firefox! It is a javscript problem that you describe (not CSS)... I have an idea of where and how to fix it but it may be tomorrow before I get chance. I'll post back here when I do.

Offline BlueC

  • Jr. Member
  • **
  • Posts: 25
Re: Import .CSV Address Book
« Reply #13 on: April 13, 2008, 08:53:29 AM »
pagedeveloping, I had a look at this and couldn't reproduce the problem in IE6 (I don't have IE7 to hand right now). However, could you please try forcing a refresh of the cache in IE7 (is it CTRL + F5?) and see if that solves the problem? It may be that your browser hasn't refreshed the app.js file from roundcube.

Offline pagedeveloping

  • Newbie
  • *
  • Posts: 2
Re: Import .CSV Address Book
« Reply #14 on: April 13, 2008, 02:22:09 PM »
Quote from: BlueC
pagedeveloping, I had a look at this and couldn't reproduce the problem in IE6 (I don't have IE7 to hand right now). However, could you please try forcing a refresh of the cache in IE7 (is it CTRL + F5?) and see if that solves the problem? It may be that your browser hasn't refreshed the app.js file from roundcube.

Thanks! :D Worked like a charm. Just to let you know I have updated to the latest RC0.1.1 and applied your 1.1 patch and it is working greate.

Peter