Textpattern CMS support forum
You are not logged in. Register | Login | Help
- Topics: Active | Unanswered
Re: Allow website users to create new articles
Mem_moderation is very powerful and I agree it’s not very easy to get your head around so here’s an example of an event submission form copied wholesale out of an event submit form. I’m strapped for time at the moment so can’t go into it in all that much detail but perhaps you can make head or tail of the following. Note that it may not quite exactly match the current iteration of mem_moderation but the principle is similar.
You can see the various mem_form_...
tags which work much like zem_contact_reborn for text inputs, selects, textareas. The hidden or secret ones can be used to auto-allocate to a section (here events) without that having to be filled out. The name
attribute correspondes to the respective field in the textpattern table in the database (you might want to look at it with phpmyadmin / sequel pro etc. to familiarise yourself with it). The complicated looking format="..."
bits are not normally necessary, they’re just to limit date formats in a particular format which I needed for my auto-expiring event list.
This snippet went in the respective page template:
<p>Use this form to submit an event for inclusion in the calendar of events.
Please note that your event will only appear in the list once it has been verified and approved by a moderator.</p>
<txp:mem_moderation_article_form
form="mod_article_event"
thanks_form="mod_article_success"
label="Submit an event"
/>
This is the form called mod_article_event
:
<h3>Submit an event</h3>
<div><txp:mem_form_text name="title" required="1" class="long" label="Name of the event" break="" /></div>
<div><txp:mem_form_text name="custom_5" required="1" class="short" label="Start date" example="(YYYY-MM-DD)" break=""
format="/^(20[0-9]{2})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/" /></div>
<div><txp:mem_form_text name="custom_6" required="1" class="short" label="End date" example="(YYYY-MM-DD)" break=""
format="/^(20[0-9]{2})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/" /></div>
<div><txp:mem_form_text name="custom_7" required="1" label="Venue, Country" break="" /></div>
<div><txp:mem_form_text name="custom_8" required="1" label="Organiser" break="" /></div>
<div><txp:mem_form_text name="custom_9" required="1" label="Event Homepage" break="" /></div>
<div><txp:mem_form_textarea name="body" required="1" class="txtarea_big" label="Description" break="" /></div>
<div><txp:mem_form_textarea name="note" class="txtarea_medium" label="Additional notes for the moderator (e.g. your name and email)" break="" required="0" /></div>
<txp:mem_form_hidden name="section" value="events" />
<txp:mem_form_submit button="1" name="action"><span>Submit event details</span></txp:mem_form_submit>
… and this is the form called mod_article_success
:
<txp:mem_if_step name="article_delete">
<div id="mod_deleted">
<h2>Event listing deleted</h2>
<p>Your submission has been deleted and will not be posted on this site.</p>
</div>
<txp:else />
<div id="mod_submitted">
<h2>Event listing submitted</h2>
<p>Thank you for submitting your event. It will be reviewed by a moderator before being posted to the site.</p>
</div>
</txp:mem_if_step>
You can style it how you like and use different markup. I’ve forgotten where the “article_delete” step comes in. Anyhow, this is what it looks like:
I added a date plausibility check (date not in the past, start date not after end date – see this thread) and a honeypot trap to reduce spam (see this thread) and then spruced it up a bit with a jquery date picker that helps reduce erroneous inputs and a textarea expander. The notes field is just a helper and is lost once you accept the entry so it’s not for anything important. By comparison, the edit area in the backend is not very pretty but you know what you’re doing.
Last edited by jakob (2010-03-25 18:42:07)
TXP Builders – finely-crafted code, design and txp
Offline
Re: Allow website users to create new articles
I managed to have moderation with mem_public_article.
Just set a mem_form_secret field which sets the article status to 3:
<txp:mem_form_secret name="Status" value="3" />
For more security, I test there is not too many articles waiting moderation. (with jmd_if_count)
P.S woaw thanks Jakob for the great example! I’m doing something very similar, but a lot less polished for now! I chose mem_public_article because of the possibility to edit articles, which I’ll try to add in the future.
Last edited by PascalL (2010-03-25 22:35:37)
Offline
#15 2010-03-26 09:12:22
- Algaris
- Member
- From: England
- Registered: 2006-01-27
- Posts: 568
Re: Allow website users to create new articles
Jakob that’s absolutely amazing, just the sort of thing I was looking for. I haven’t had time to test it yet, but I’m looking forward to trying. What you’ve posted makes a lot of sense to me. Thank you so much.
I really need to get into this javascript and jquery thang, neither of which I know anything about as yet.
One question I completely forgot to ask. If something is sitting in the moderation queue can you edit it there as though it’s an article before approving it or at least publish it as hidden so you can edit it before going live? I’ll probably find this out when I’ve had to time to do more testing.
Last edited by Algaris (2010-03-26 09:14:31)
Offline
Re: Allow website users to create new articles
If something is sitting in the moderation queue can you edit it there as though it’s an article before approving it or at least publish it as hidden so you can edit it before going live?
Yes, you see a simplified list of submitted articles a bit like the articles pane but without whistles and bells and there’s an edit pane which shows the submitter’s notes at the top followed by the various fields one below the next – not terribly pretty but it works. You can edit the details and choose between “Save” (= edit but keep in the moderation queue), “Accept” (=becomes a txp article) and “Reject” (= delete).
I believe there’s even a tag to output the articles currently in the moderation queue in the front end but I’ve not tried that.
TXP Builders – finely-crafted code, design and txp
Offline
#17 2010-03-26 14:08:58
- Algaris
- Member
- From: England
- Registered: 2006-01-27
- Posts: 568
Re: Allow website users to create new articles
Next question (sorry I’m asking an awful lot here). If I want people to be able to upload an image and associate it and its thumbnail with an article is that fairly easy to do? I noticed the mem_moderation_image plugin so I’m assuming I can mix this in with the mem_moderation form and give it the appropriate textpattern table name for the article image or custom field.
Offline
Re: Allow website users to create new articles
WOw thanks a lot jakob. You really almost helped me to make the perfect ticket system (for me) =)
There are only two little issues left. For any reason when user initialy write an article with mem_moderation i as the admin get no email notificaton about the fact that there is something new in the queue. Any idea how that can be done? I use comments as suggested somewhere by stef to handle the back and forth of the user and the admin. I get an email notification there by using the rvm_mail_comments plugin. So that works fine.
The second thing is… I would like to search through comments. Is that possible somehow. As a ticket system it only makes sense if later the user can search for any words that are mentioned in the comments.
Hopefully I can at least solve one of those two issues to get the system finally running.
Offline
Re: Allow website users to create new articles
OK…. i was too stupid to see that there are additonal preferences to be made in “preferences” …almost to ashamed to write that down.. but maybe it saves someone some time.
For the comments thing i haven´t found a solution yet. I am thinking of playing around with articles belonging to certain categories (ticket number) for example. Dont know if that works because I will end up with a lot of categories then. just an idea for now.
Offline
#20 2010-09-16 08:35:11
- Gallex
- Member
- Registered: 2006-10-08
- Posts: 1,315
Re: Allow website users to create new articles
trying to get to work my (simpler) form using jakob’s as an example
but, after installation and activation mem_admin_parse, mem_moderation, mem_moderation_article and mem_form i get blank page with this error:
Fatal error: Call to undefined function mem_form() in /home/np34630/domains/hm-kodulehed.ee/public_html/textpattern/lib/txplib_misc.php(594) : eval()'d code on line 1170
what this refers to?
Offline
#21 2010-09-17 07:19:41
- Gallex
- Member
- Registered: 2006-10-08
- Posts: 1,315
Re: Allow website users to create new articles
is it something wrong with my code or plugin?
Offline