Hi, I'm Siddhant Rajagopalan, a second year undergraduate student studying CSE from IIT Bombay.
I am currently working on improving the usability of CiviMail as my GSoC 2014 project. We are at around the midterm stage of the project, this post is to get feedback on the progress made.
My previous blog post which talks about my project can be seen at https://civicrm.org/blogs/rajgo94/mail-blast-ui-mockups-and-plan-coming-weeks.
I greatly appreciate the feedback received for that blog post.
We stuck to a tab UI made using AngularJS based on the feedback received for the mockups. We can switch from one tab to another interactively.
The code is available on my github. If interested do check https://github.com/rajgo94/civicrm-core.
Break-Up of Mailing UI
Mailing List.
I have made a mailing list page where all the mails are listed along with the sender of the mail and few other details. This gives the option to edit existing mails or create a new one.
Recipient
Currently it is a 3 tab UI.
Most of the accordians inside the tabs are collapsed by default.
The recipient tab uses a select2 widget to include and exclude the groups as well as the previous mailings. In one select2 widget that allows multiple selections, we can include and exclude the groups or mailings of our choice.
We can switch between tabs anytime using next and previous or otherwise by simply clicking on the tab. I have added basic validation for various required fields.
Content
The second tab is Content. It has 3 accordions, all collapsed initially.
Mailing Subject is a required field on this page.
Track and Respond
Works in the same way as current CiviMail.
Schedule and Send
Datepicker has been used to select the date for scheduling the mailing. The time has to be inserted manually.
Next Stages:
- I have completed most of the front-end code as well as saving to the CiviCRM database, so need to fix few issues with update mode.
- Currently I am using a textarea for HTML content, so switch to wysiwyg editor.
- Add tokens support for content
- Fix preview mailing, this might require creating new APIs and also tests
- Fix existing know bugs in the code
Any feedback would be greatly appreciated.