Building a Blogging System -- Rapidly using Alpha Five v10 with Codeless AJAX (tm)


Published on

Many people think that web database applications are things like ecommerce or contact management or order entry. But in this demo you will see Jeff Cogswell has built a full AJAX powered database driven Blog that has similar functionality to Google's Blogging platform. He has chosen Alpha Five v10 with CodeLess AJAX (tm) as his development platform to do it much more rapidly vs doing it in PHP, JAVA, Ruby, Perl, Python or visual

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Building a Blogging System -- Rapidly using Alpha Five v10 with Codeless AJAX (tm)

  1. 1. Alpha Five Blogging Engine<br />A complete blogging engine hosted and developed entirely within an Alpha Five web server.<br />By Jeff Cogswell<br /><br />
  2. 2. Looks just like the current Alpha Five blog but uses Alpha Five itself! Note the .a5w extension.<br />
  3. 3. CSS coded to look like the current blog.<br />Grid showing single record. Uses free form layout<br />Text displays full HTML but isn’t editable here since this page is for the people reading the blog.<br />
  4. 4. Scroll down to see the AJAX-powered comment mechanism.<br />
  5. 5. Click submit and comment instantly appears without a page refresh, thanks to AJAX.<br />
  6. 6. There’s also a page for viewing the entries. This uses a grid as well. Each record in the grid shows up as a date, clickable title, excerpt, and “read more” link.<br />This is one record in the table.<br />
  7. 7. To add entries, you log in using the Alpha Five security system.<br />
  8. 8. Once in, you can add and edit the entries, view the blog, or log out.<br />
  9. 9. Editing an entry is easy thanks to the Rich Edit control of Alpha Five, along with some custom JavaScript to add a couple more buttons.<br />Some custom JavaScript and HTML enhances the functionalityof the Rich Text editor, including a “View Source” for editing the HTML and an “Insert Image”.<br />
  10. 10. Clicking Toggle HTML/Source lets you view and edit the actual HTML source in the Rich Text editor.<br />
  11. 11. Clicking Insert Image lets you select an image URL.<br />
  12. 12. If you view the blog list or entry while logged in, you have an additional toolbar that takes you to the Manage Entries screen or log out.<br />
  13. 13. The toolbar appears on the page for viewing an entry as well – but again, only if you’re logged in. Server-side Xbasic code makes this possible.<br />
  14. 14. A Few Tricks Behind the Scenes<br />
  15. 15. The page for viewing an entry uses three grids – one master, and two linked grids.<br />The master grid displays a single record.<br />The first linked grid lists all of the comments for this entry.<br />The second linked grid is only a form for adding an additional comment.<br />
  16. 16. The only trick required here is updating the comments grid when a new comment is added. This meant saving the grid object into a variable, and then, in the afterGridSubmit function, calling the object’s refresh() method, which uses AJAX to automatically refresh the comments grid, all without leaving or reloading the page.<br />
  17. 17. The entry list page displays either the Excerpt field (if the blogger filled it in) or the first 1000 characters of the Full Text field with the HTML stripped out (if the blogger didn’t provide an excerpt.) Making this work requires some server-side code.<br />
  18. 18. Displaying either the excerpt of a computed excerpt requires some server-side code. The code tests whether the excerpt is present. If not, the code strips out the HTML using Alpha Five Xbasic’s regular expression engine, truncates the string to 1000 characters, and adds an ellipsis.<br />
  19. 19. This, of course, requires using a control type of Custom, and putting the preceding code in the Custom Control Properties definition property.<br />
  20. 20. But in order for the Excerpt custom control property’s function to be able to access the Text field, the Text field had to be present. Including the Text field in the field list but checking “Hide Row” didn’t allow the function to access the field’s data. The simple solution here, then, is to have the text field visible but display nothing.<br />
  21. 21. The page for viewing the entry requires that full HTML be displayed. Using a label control doesn’t work because it doesn’t display HTML as it replaces < and > with the entities &lt; and &gt; respectively. Using a Rich Text Editor isn’t appropriate due to the editing nature. The solution is to simply display HTML.<br />Making this happen required a custom control as shown in the next slide.<br />
  22. 22. The text is sent to the browser verbatim without being HTMLized. Easy! One simple line of code.<br />
  23. 23. In the page for editing an entry, which pops up the detail grid in its own window, adding a couple buttons above the Rich Edit control required some simple tricks as well.<br />
  24. 24. The Freeform Template property contains the code to make this happen. This is some simple HTML that looks identical to the HTML used in the toolbar. In this case, two “buttons” are added, each calling some custom JavaScript.<br />
  25. 25. This custom JavaScript for inserting the image is in the a5w page itself and simply calls the Rich Text Editor object’s insertHTML method. There are two such routines, one for the Text field and one for the Excerpt field.<br /><script><br />function insertTextImage() {<br />varimgurl = prompt('Image URL');<br /> if (imgurl != null) {<br />ENTRYMANAGEGRID_TEXT_RTEObj._rteObj._insertHTML(<br /> 'img','',{src:imgurl})<br /> }<br />}<br />function insertExcerptImage() {<br />varimgurl = prompt('Image URL');<br /> if (imgurl != null) {<br />ENTRYMANAGEGRID_EXCERPT_RTEObj._rteObj._insertHTML(<br /> 'img','',{src:imgurl})<br /> }<br />}<br /></script><br />
  26. 26. The custom JavaScript for toggling the HTML/source is right in the control’s Custom Layout HTML itself:<br /><ul class="GlassBlueNavSysTBSH" style="padding-bottom:3px;"><br /> <li class="GlassBlueNavSysTBSHF" style="float:left"><br /> <a class="GlassBlueNavSysTBSHButtonOn" href="#" <br />onclick="ENTRYMANAGEGRID_TEXT_RTEObj.toggleDesignMode()"><br /> Toggle HTML/Source<br /> </a><br /> </li><br /> <li class="GlassBlueNavSysTBSHL" style="float:clear"><br /><a class="GlassBlueNavSysTBSHButtonOn" href="#" onclick="insertTextImage()">Insert Image</a><br /> </li><br /></ul><br />{Text}<br />
  27. 27. Done! <br />All this comes together for a very simple yet complete and powerful blog engine that runs completely under Alpha Five v10. There are a few other things that could be added, for example:<br /><ul><li> A way to upload images directly to the server; this could be integrated right into the “Add Image” button. That way the blogger can reference images stored on the server itself.
  28. 28. A comment editor list that the blogger, when logged in, can access to edit and remove comments.
  29. 29. A comment approval mechanism. In this case, comments wouldn’t automatically appear, but would be flagged as needing attention by the blogger.
  30. 30. A mechanism that lets people commenting receive an email update when new comments are added.
  31. 31. Additional security so a blogger can only edit entries that he or she created, and can only choose his or her own name in the dropdown list for author name.
  32. 32. An RSS version that generates RSS. This would be a fascinating test of the grid – display all records, but with no HTML formatting, and with each field carefully coded to display itself in XML format.</li>