Hello,
I'm glad you like this software and it looks really nicely suited for your current needs.
So, let me start giving a comment on each of your aims:
1. & 2. - The nature and complexity of fields to be added is most important here. In general, as a programmer yourself, I believe it's better not to resort to GUI for adding fields but write your own module instead.
3. Sounds like adding select field would be enough. You may however tweak Tickets instead and add contact field there. CRM_Tasks were designed to hold more private and individual data, but it's always your decission if you want to leave it like that.
4. Easily doable. Just change CommonData table 'Premium_Projects_Status' - you can do that by calling
Utils_CommonDataCommon::new_array('Premium_Projects_Status',array(0=>'Planned',1=>'Approved',2=>'Canceled',3=>'In Progress',4=>'Completed',5=>'On Hold' <new values here>),true,true);
in Installation part of your new module.
5. Permissions for RecordBrowser sets are all set by using access method. I'm not sure if that's enough for your needs, but we can discuss it later, if you bring more details about how privileges are to be used.
6. We do have support in generating PDF files (we're using TCPDF library - works like a charm). It's quite easy - as you can just prepare HTML format of this report and call writeHTML() method. Some conditions apply to this HTML - in general you just need to keep it simple and use css inline, in HTML tags.
7. You can just skip installing (or uninstall) this module and it should work all fine.
8. RecordBrowser access has option for field-based access, so it should be no problem.
Now to answer your questions:
1. I'd just create one module that modifies existing contacts/projects/tickets modules. As they are based on RecordBrowser, everything you listed can be achieved.
2. Not really. It's a good option only if you are not a programmer and you need only few and simple fields to be added.
2a. Actually, we do not support radio buttons. All Yes/No choices are placed in select elements - simply to save some space, sometimes to give an "empty" the choice. All in all, we didn't find radio buttons suitable for the application, yet it's possible to add such field, quite easily.
2b. We are using prototype autocomplete. There are multiple tutorials on the web. This one looks fine:
http://www.ajaxdaddy.com/scriptaculous- ... plete.html
You don't actually need more than a half of what's there, but it gives you basic how-to you need. It's quite simple, once you get this thing on. 🙂
2c. RecordBrowser is complete CRUD solution, customizable and expendable. If you relay on this, I guess you won't even need to build one HTML QuickForm or call any SQL queries.
3. Yes, new module is good option to keep your modifications organized, grouped and most importantly - you can still perform epesi updates on your installation.
4. The best option is, I believe, to look at modules/Custom/TasksModified module - it gives you basic reference on how to modify recordSets, add new field, set your own permissions.
Hope this helps,
Arek