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