Berylium 2002 : Body and Shine

Body and Shine Goals:
Use 1=true 0=false -1=default for boolean, -1=default for settings
For each type of object, Policies must determine: methods allowed, flavors allowed, rankfloor, rankceiling, default status, default public
Working cut-copy-paste methods on top of insert, update, list and view.
Drag-and-drop UI for editors.
History lists, play lists, queues, baskets-- abstract collections.
Publishing of all public objects and files to http/ directory structure and/or ftp mirror.
Upload all files to secure-http/  structure-- not safe from sharing but not viewed in transit at least.
	( Private documents (stored in db) are not viewable outside of membership )
Selective backup of all objects via SQL. 
Contexts and policies are saved as Preferences, can be grafted onto other (new or existing) sites. Or shares?
Creation of new Berylia is a one-step process.
Documentation from code
Independent error codes
Migrate code to CVS

Full administration of the following items:
	--------------------------------------------------
	sessions 		( anonymouses | members | admins )
	sitemembers 	( members | admins )
	foldermembers 	( invites | members | editors | admins )
	contexts 		( anonymouses | members | editors | owners | admins | aliases )
	policies 		( anonymouses | members | editors | admins | aliases )
	lists	 		( lists | histories | baskets | queues | temps | aliases )
	sites			( sites )
	folders 		( folders | aliases )
	documents 		( documents | articles | logs | slides | polls | aliases )
	images 			( images | photographs | illustrations | icons | ads | aliases )
	comments 		( comments | messages | updates | questions | ads | aliases )
	sounds 			( sounds | alerts | psas | readings | aliases )
	videos 			( videos | messages | psas | aliases )
	files				( binary | text | aliases )
	products		( products | services | auctions | aliases )
	---------- 60 flavors in 14 types of objects ---

Full administration means that the following methods are available (to admins at least) on all objects:

		create
		insert
		upload
		view
		edit
		update
		list
		publish
		unpublish
		delete
		undelete
		hide
		post
		makealias
		toclip
		fromclip
		backup
		enqueue

Standard Properties for Publishable Content Objects:

	-- stored administrative properties --
	id			unique id
	flavor			subtype of the object: flavor | alias (indexed)
	created			creation timestamp
	updated			last update timestamp
	sessionid		last session to modify this object
	sitememberid	Sitemember id of owner/creator or 0 for Anonymous (indexed)
	siteid			id of containing Site [or 0 for Ubiquitous] (indexed)
	folderid		id of containing Folder (indexed)
	status			new | posted | hidden | deleted  (indexed)

	-- stored content properties --
	name			filename for URL and reference
	originalid		original objectid if this is an alias
	parentobjtype	  ?
	parentid		?
	public			publicly viewable if true, private if not
	locked			object is locked by owner or admin if true
	rank			numeric rank determines how the object is indexed (1000 might mean list on homepage)
	title			object title in lists
	headline		display headline in views (defaults to title)
	description		textual description for lists (defaults to first paragraph of body)
	body			body text and code
	keywords	comma-delimited keywords/phrases for searching
	properties	carat-delimited key=value pairs of additional object properties
	icon			object:id reference or URL of icon image

	-- run-time properties --
	objtype			type of object
	columns			SQL column definition for this type of object
	queryextras		filters and restrictions added by policies on object lookup
	listsize			?
	path				path to object file
	url				object url
	context			  context being used
	index				container or child index







How do you add an object to the list in a particular container?
How do I add questions to a poll? Using poll-edit I:
	Create each new question (with parentobjtype=poll and parentid=poll->id) by clicking on "question" (question->create()) and inserting the data.
	Click to open a question-list popup window. Select question(s) to alias. Create a question alias (with parentobjtype=poll and parentid=poll->id and originalid=question->id) by clicking the createAlias icon next to the appropriate entry in the question-list window, or by clicking the Create Aliases of Checked button at the end of the list.

How do I call a method on some object in the future?
How do I make something expire in 30 days? How can I get reminders of things I need to do? How can I automate Berylium using scripts?
Create a new event: an event object is triggered, either by time or by some other event, say the temperature going above 70, or the prior event completing successfully, or clicking the next button. Contained within the event object will be the URL for the server to call, as you, when the event is triggered. You can choose to email yourself the results. Note that events may not submit forms, practically limiting them to view, list, publish, unpublish, delete, undelete, hide, post, makealias, toclip, fromclip, backup, and enqueue. The workaround is to email yourself the html output and fill out the form when you open the email (you will need to log on or have a valid cookie in the responding browser window to do it).
Note that the URL to call might be any of the following:
	- a url that publishes a document
	- a url that causes a message to be sent via im
	- a url that adds another url to your session queue for later viewing

How do I put some object into a queue for playback?
How do I add a video to a playlist?
A playlist is a container of playlist-entries: each entry tracks particular information about the file to be played back (url, start, duration, etc), as well as what onplay and onfinish events might occur. See add to container, above?