Building best contact form through community effort?
Permalink
I have been building a custom form that I will be using on client sites for myself (and possibly to sell in the Marketplace here eventually...though such has not been my main reason and is no where near ready for such) and am bumping into issues in trying to understand how the Concrete5 code works.
These are not issues with how to get the form to work. It works and works well. The code is very nice and clean. A block PHP file and a controller PHP file.
But in a desire to get a better understanding of some of the issues that I am having trouble understanding (seehttp://www.concrete5.org/community/forums/customizing_c5/how-does-a... for one) I am wondering if it might be best for me to release the code under an MIT license or some such here on the forum and open it up to being worked on by all interested parties?
That we all might benefit from it.
One thing that concerns me thought is someone running off with my code, putting it on the marketplace and selling it from under me, which wouldn't be fair.
How could I avoid that?
Or is that just a risk I would have to take?
Carlos
These are not issues with how to get the form to work. It works and works well. The code is very nice and clean. A block PHP file and a controller PHP file.
But in a desire to get a better understanding of some of the issues that I am having trouble understanding (seehttp://www.concrete5.org/community/forums/customizing_c5/how-does-a... for one) I am wondering if it might be best for me to release the code under an MIT license or some such here on the forum and open it up to being worked on by all interested parties?
That we all might benefit from it.
One thing that concerns me thought is someone running off with my code, putting it on the marketplace and selling it from under me, which wouldn't be fair.
How could I avoid that?
Or is that just a risk I would have to take?
Carlos
well I can tell you one thing, If you have it posted for free people won't make much money selling it :) but you don't have to license mit, if you go for creative commons or something like that you can still share it on the forum.
LOL
True enough.
Do you think there is interest on working on such a best form together?
It's not worth it for me to post the code, as basic as it would undoubtedly be for some of you, if there is little interest in a community effort to build such a block.
Again I am not looking for help making the block work. It works and works well. From my end I am simply looking to help motivate others to help me understand how C5 works internally respecting how it processes forms (whether such understanding materializes or not...well...it remains to be seen).
- My form is tableless.
- My form saves the data entered so that on an error a user does not have to re-enter it until they get it right.
- My form uses no Javascript for validation (such validation is easily gotten around by hackers and in my opinion interferes with form ease of use in that one must first click away this big, fat Alert Javascript dialog box before getting back to the form)...it is strictly server side validation.
- My form checks for things like empty fields and returns relevant error messages into the form page itself.
- My form eliminates Concrete5 helpers that do little more than add unnecessary complexity to the code by encasing a simple array assignment type of thing. I believe in using helpers if such will make the code easier to understand and otherwise more efficient...otherwise just straight PHP thank you very much.
- I am working on adding reCaptcha to the form.
- Cross browser compatible.
- My form uses the button HTML tag for the Submit button (which is more flexible than the input field turned into a button).
I have had no need to build a block view and edit capability so it is missing those two. I personally would rather just go into the code and change the email and subject values manually but it would be nice to give these capabilities to an end client and I intend to add this soon.
Carlos
True enough.
Do you think there is interest on working on such a best form together?
It's not worth it for me to post the code, as basic as it would undoubtedly be for some of you, if there is little interest in a community effort to build such a block.
Again I am not looking for help making the block work. It works and works well. From my end I am simply looking to help motivate others to help me understand how C5 works internally respecting how it processes forms (whether such understanding materializes or not...well...it remains to be seen).
- My form is tableless.
- My form saves the data entered so that on an error a user does not have to re-enter it until they get it right.
- My form uses no Javascript for validation (such validation is easily gotten around by hackers and in my opinion interferes with form ease of use in that one must first click away this big, fat Alert Javascript dialog box before getting back to the form)...it is strictly server side validation.
- My form checks for things like empty fields and returns relevant error messages into the form page itself.
- My form eliminates Concrete5 helpers that do little more than add unnecessary complexity to the code by encasing a simple array assignment type of thing. I believe in using helpers if such will make the code easier to understand and otherwise more efficient...otherwise just straight PHP thank you very much.
- I am working on adding reCaptcha to the form.
- Cross browser compatible.
- My form uses the button HTML tag for the Submit button (which is more flexible than the input field turned into a button).
I have had no need to build a block view and edit capability so it is missing those two. I personally would rather just go into the code and change the email and subject values manually but it would be nice to give these capabilities to an end client and I intend to add this soon.
Carlos
that sounds good- lots of features. I think that if you can build it out for end users- maybe just steal the from blocks code for that- than it would be quite popular. I know there has been discussion in some other forums on expanding on the big four, and it sounds like this might do some of that- so if you wanted you could try to build it into the core, and get feedback there. you could also try irc on weekdays, might help out there.
Thanks for the encouragement but I am interested mainly in finding out if there is interest in building this type of block together for the benefit of all...with my hope being that one's will be more motivated through such to answer some of my tough code questions about what Concrete5 does underneath.
While I really like some aspects of Concrete5 I got to tell you that as a web developer C5 is ten times harder to understand than something like WordPress (I mean the underlying code).
The code in C5 is incredibly complex (I'd say almost as complex as trying to understand Drupal code if not worse in that the C5 community is much smaller).
I am trying to get help with that complexity so that I don't have to keep bumping into brick walls having to then spend a bunch of time trying to track down where in the world variables are being initialized, what their values might be, where they fit into the scheme of how a block operates, etc..
I know it may seem like I am wasting time digging this deeply but in the long run I will be the one sitting pretty in that I will be able to modify C5 at will and make it do whatever I want it to do when I want it to do something.
Without having to come here and ask so many questions.
Not to mention I may be able to contribute more meaningfully to it's improvement.
Carlos
While I really like some aspects of Concrete5 I got to tell you that as a web developer C5 is ten times harder to understand than something like WordPress (I mean the underlying code).
The code in C5 is incredibly complex (I'd say almost as complex as trying to understand Drupal code if not worse in that the C5 community is much smaller).
I am trying to get help with that complexity so that I don't have to keep bumping into brick walls having to then spend a bunch of time trying to track down where in the world variables are being initialized, what their values might be, where they fit into the scheme of how a block operates, etc..
I know it may seem like I am wasting time digging this deeply but in the long run I will be the one sitting pretty in that I will be able to modify C5 at will and make it do whatever I want it to do when I want it to do something.
Without having to come here and ask so many questions.
Not to mention I may be able to contribute more meaningfully to it's improvement.
Carlos
Hey Carlos,
There have been a couple of efforts to get a "community form" block going thus far. One was primarily concerned with making the template better (not table-based), and the other was primarily concerned with allowing you to extend the controller with your own actions.
One of them has fallen out of development (it hasn't been updated to the latest 5.4.1 version of C5 yet), and the other I think is still being developed:
http://www.concrete5.org/community/forums/block_requests/new-commun...
I don't think that should stop you from trying to do your own (especially as a learning project), just wanted you to be aware of some other options out there. Might be a good idea to talk to the maintainer of the one I linked to and ask about his experiences with it (both technically and getting people to help out with it).
-Jordan
There have been a couple of efforts to get a "community form" block going thus far. One was primarily concerned with making the template better (not table-based), and the other was primarily concerned with allowing you to extend the controller with your own actions.
One of them has fallen out of development (it hasn't been updated to the latest 5.4.1 version of C5 yet), and the other I think is still being developed:
http://www.concrete5.org/community/forums/block_requests/new-commun...
I don't think that should stop you from trying to do your own (especially as a learning project), just wanted you to be aware of some other options out there. Might be a good idea to talk to the maintainer of the one I linked to and ask about his experiences with it (both technically and getting people to help out with it).
-Jordan
Seems like the C5 community here is just too small to have such an effort stand a reasonable chance of success.
I think on my end I'll just go back to trying to trace the code to figure out how it does some things I don't quite understand without bothering with a community effort at a better form block in an effort to get some input to better understand the C5 code.
Well...it's not that I don't understand thanks to input from Scott on that other thread. It's rather that I don't understand where it does what it does so that I can then tweak it or make better use of what it does if the need arises. Sometimes there are 20 or more files involved in generating the rendered page!
Today...I am going to try and spit out a trace of function calls that C5 executes through PHP's debug_backtrace() or some such. I got to figure out a more efficient way to figure out where something is done in the code than to go around using grep in a hit or miss fashion.
If I succeed in spitting out a trace when I force an error in the code that I am interested in...that should help a lot.
Thanks again for your input Jordan.
Carlos
I think on my end I'll just go back to trying to trace the code to figure out how it does some things I don't quite understand without bothering with a community effort at a better form block in an effort to get some input to better understand the C5 code.
Well...it's not that I don't understand thanks to input from Scott on that other thread. It's rather that I don't understand where it does what it does so that I can then tweak it or make better use of what it does if the need arises. Sometimes there are 20 or more files involved in generating the rendered page!
Today...I am going to try and spit out a trace of function calls that C5 executes through PHP's debug_backtrace() or some such. I got to figure out a more efficient way to figure out where something is done in the code than to go around using grep in a hit or miss fashion.
If I succeed in spitting out a trace when I force an error in the code that I am interested in...that should help a lot.
Thanks again for your input Jordan.
Carlos