Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

Annabelle Content Management System

 [1/13] from: sabufrancis::rediffmail::com at: 13-Sep-2007 10:29


Hi I've started writing a simple object-oriented M-V-C content management system called "Annabelle" (ACMS) written in Rebol and JQuery. This is the very first pre-pre-alpha version. The tiny documentation is at: http://www.sabufrancis.com/acms.pdf The download is at http://www.sabufrancis.com/acms.7z Please read the "readme.txt" file for the simple installation instructions. I am a practising architect by training, profession and practice. I use programming to investigate architecture of all kinds. I am relatively new to Rebol (Prolog is my preferred language) I find there are lots of relations between web-space and real space which an architect can investigate. I have some theories of my own, but of course they may be wrong or re-invented. I would appreciate if these can be verified. I will be highly obliged for any feedback and participation in this project. If there is sufficient interest, I will set up a Subversion system somewhere for collaboration. Regards Sabu Francis

 [2/13] from: jasonic:nomadics at: 13-Sep-2007 14:54


Hi Sabu Anabelle looks very interesting to me.. Would love to see some diagrams.. back of envelope sketches, or even better screen cast white boarding would be great! Or a screen cast or simple tutorial sequence showing some examples of using Anabelle. It's the information architect in me who thinks visually symbolically. Have restarted the process of major enhancement to the Vanilla project - to make it do things I need for happy Collaborative-WikiLo-CMS living :-) At the moment porting all the vanilla code into LEO to understand, restructure and document existing code plus my own variations and I hope those of others. Running vanilla on Cheyenne now. But not tested yet with lots of files or lots of use. So been thinking a lot recently about CMS and Vanilla. How, what, why ? Rebol database solutions which might integrate well and easily with Cheyenne-Vanilla. Not sure... I love/miss the simplicity of old html file system- especially that paradigm of such an accessible hands-on mapping. But I recognize there are important features of database solutions - locking, rollback, backup etc etc. Have past experience with Zope and ZODB [python] MySQL is everywhere, but I don't love it at all.. So I am delighted to learn about your 'Anabelle' work. Wondering out loud how if it can play nicely with Vanilla +/or Cheyenne. My first impression is that Vanilla could be revised to run on Cheyenne-Anabelle framework ?? I hope the answer is a loud YES. Would like to know more about XML use in Anabelle. I'm looking into Jabber XMPP again and XMLRPC My design calls for adds several key functions - remote control - shared viewing - live editing - edit recorder and playback system local or remote - white board - CMS update and shared transfer This is all for TRANZILLA - an alternative net publishing system I am designing. It's based on musical instrument and patch bay metaphor. I like Jabber - XMPP because it is open and has many client and server libraries and implementations. And I like its use of a long XML data stream. I've always felt 'chat' is just the tip of the iceberg. XMPP is a messaging PRESENCE protocol. So all sorts of message passing can take build on that. But shared or live editing and content update is one application. I've done some tests using XMPP in Flash, using XIFF library. Its' now been ported to AS3 [Actionscript3]. And looking at Adobe Flex/AIR I really like the new dynamic data binding demos I've seen. To use sockets or XMPP ? To do all in Flash/Flex ? I'm trying to to find a nice modular architecture which lets me enjoy the minimal grace of REBOL, but can integrate the superb interactivity of Flash/Flex. regards Jason Sabu Francis wrote:

 [3/13] from: sabufrancis:rediffmail at: 13-Sep-2007 19:06


Hi Jason Thank you for your detailed inputs. I'll try and offer some explanations In the .7z file, there is already a small Annabelle based application which can be used to develop a site that logs in users, saves forms containing any number of fields as an ACMS object and reads out files back into the browser. It demonstrates the power of ACMS inheritence mechanism in the following manner: On the root of the server, both the top and side menu of the website is displayed. But on the the sub-folder within the site (/test/ ) only the side menu is displayed, even though in both the cases the HTML file for viewing is more or less the same (except for additional forms in the case of the second file, which anyway does not have anything to do with the display of the menus). The second file (the index.html at /test/) has two forms. One can also be used to create user registrations and the second does login (it sets a cookie) I was creating the example as I was coding so it is probably a very trivial example. I guess I need to document the step by step construction of the site. I am going out of my country shortly and would be back only on Oct 2, so I guess it would be after that. I am a big fan of Vanilla. It has a neat extension system. But I don't think it has any OOPs mechanism. I was more of a user of Vanilla rather than a developer, so I have not looked into its internals in detail. However I too believe the concepts of Vanilla can be used along with ACMS. One of the main goals of ACMS is to cleanly apportion the development of a complex website between various members: the overall website architect (who would also probably work on the models used in the site), designers (the one who sets up views), and programmers who write the controller code. With JQuery it is possible to do very neat things, like visual effects, AJAX, etc. The development work in JQuery is extremely fast. The only downside is that for JQuery to work, Javascript has to be switched on ... which I believe is on in most cases. ACMS has a natural connection with XML. It would be quite easy to port XML into ACMS, and even out of ACMS. I do not know XMPP much but it should be possible to get any XML structure into ACMS and then some more. Thank you very much Regards Sabu Francis Jason Cunliffe wrote:

 [4/13] from: chd:1staccess:ca at: 13-Sep-2007 10:06


I would love to try Annabelle, however I can't download it with a .7z extension. Please offer it as a .zip or .tar.gz file so us Mac users have a chance? Thanks ~chris

 [5/13] from: tim-johnsons::web::com at: 13-Sep-2007 7:29


On Wednesday 12 September 2007, Sabu Francis wrote:
> I am a practising architect by training, profession and practice. I use > programming to investigate architecture of all kinds. I am relatively > new to Rebol (Prolog is my preferred language)
Hi Sabu: Just wondering if you have checked out prolog.r from the scripts library, and if so, what you think of it? thanks tim

 [6/13] from: sabufrancis:rediffmail at: 13-Sep-2007 21:18


Hi You can pick it up from http://www.sabufrancis.com/acms.zip Thanks Regards Sabu Chris Dwyer wrote:

 [7/13] from: chd:1staccess:ca at: 13-Sep-2007 12:16


Thanks Sabu, zip download works like a charm! ~chris

 [8/13] from: sabufrancis:rediffmail at: 13-Sep-2007 21:55


Hi No. I have not tried this. I should do that sometime Thanks Sabu Francis Tim Johnson wrote:

 [9/13] from: sabufrancis::rediffmail::com at: 13-Sep-2007 22:42


Hi Chris Thank you for your efforts. Good to hear that it worked even on a Mac. I hope the example was not too trivial Regards Sabu Francis Chris Dwyer wrote:

 [10/13] from: tim-johnsons:web at: 13-Sep-2007 12:04


On Thursday 13 September 2007, Sabu Francis wrote:
> Hi > No. I have not tried this. I should do that sometime
I keep meaning to test it out for my own use - but haven't found the time to get around to it. I find any extension of conditional logic to be a very interesting concept. thanks Tim

 [11/13] from: sabufrancis:rediffmail at: 14-Sep-2007 1:35


Hi Yes Prolog is quite a useful language. The concept of 'backtracking' is very powerful. In fact, I think (not verified) many important concepts originated in Prolog and Lisp, two of the oldest languages. It also handles data and meta-data structures very nicely. I had used a variant of XML in Prolog (which I used to call 'proXML') that overcame many of the problems that Carl had pointed out in XML. Anyway, I am probably digressing ... I find Rebol also a very good language to work with. I think it can also handle data+code together (data turning into code, code back into data) which can be very useful. Now if someone has figured out a way to do backtracking in Rebol and do things like 'findall' ( a predicate in most Prolog to collect data together)... well that would be really wonderful. Regards Sabu Francis Tim Johnson wrote:

 [12/13] from: tim-johnsons::web::com at: 13-Sep-2007 13:28


On Thursday 13 September 2007, Sabu Francis wrote:
> Hi > Yes Prolog is quite a useful language. The concept of 'backtracking' is
<<quoted lines omitted: 9>>
> backtracking in Rebol and do things like 'findall' ( a predicate in most > Prolog to collect data together)... well that would be really wonderful.
I'm a web programmer and despite then popularity of python (my other scripting tool) and the depend for python scripters, I do more and more in rebol. The change is accelerated by the growth in rebol assets such as those at rebol.org I'm not sure *exactly* what findall does, but what follows is first - a rebol function that I wrote based on earlier code by Marco ( I think that is the same Marco that wrote prolog.r) - and after that is a simple console session. cheers tim ;; =========== code ===================== every: def[ "Evaluates code following any expression that is not FALSE or NONE." " Accumulates return values of code (if 'set)." " Returns a block if at least one code set is evaluated." " If no code block is evaluated, returns 'false." " Handles unset! values" cases [block!] "Block of cases to evaluate." ][ _n: func ["Check for unset values and return 'none if found" v [any-type!]][either unset? get/any 'v [none][v]] res: false data: copy[] while [not empty? cases][ set [condition cases] do/next cases if condition [ res: true body: first cases if T: _n do body[append data T] ] cases: next cases ] either res[ either empty? data[res][data] ][res] ] ;; NOTES: 1)'def is a subroutine variant that automatically generates ;; local variables ;; 2)Multiple docstrings ;; console session:
>> res: every[1[1] false[2] true[3]]
== [1 3]

 [13/13] from: sabufrancis::rediffmail::com at: 14-Sep-2007 10:24


Hi Thanks for the code. That would be useful. Though I did not understand how 'def works (Maybe it is in the scripts?). 'findall' does that and something more: It can walk through possible logical alternatives and present those as a list, as can be seen in this example: cat("tammy"). cat("fatcat"). cat("garfield"). .... .... findall(A,cat(A),Alst) The above findall invocation will yield the following Alst= ["tammy","fatcat","garfield"] In the above example the facts about cats were presented in the code. In usual use, the programmer would not know what facts are being collected . findall will automatically do the list collection. 'findall' can also take parts of a fact individually and make them into a list, etc. Maybe if you give an additional argument to the 'every func which is actually a function call, the above things can be met. Something like how 'sort works Regards Sabu Francis

Notes
  • Quoted lines have been omitted from some messages.
    View the message alone to see the lines that have been omitted