Monday, November 08, 2010 at 12:05 AM.

system.verbs.builtins.radio.outliner.init

<<Changes
	<<8/26/02; 10:37:12 PM by JES
		<<Moved user.radio.outliner.prefs.enabled to user.radio.outliner.prefs.flPollingEnabled. This flag now represents only whether to poll for changes.
		<<New pref: user.radio.outliner.prefs.messaging.flEnabled. Defaults to false. Delete obsolete (never used) settings in user.radio.outliner.prefs.messaging.
		<<Register IM-RPI handlers at user.im.rpiHandlers.radioOutliner.
		<<Make sure user.radio.outliner.subscribers exists.
	<<5/12/02; 5:23:22 PM by DW
		<<Init user.radio.outliner.prefs.enabled.
	<<5/6/02; 3:38:13 PM by DW
		<<Initialize new sub-table, user.radio.outliner.prefs.messaging, with sub-items: drivername, screenname, password.
			<<drivername in the first release is aim., and screenname/password identify an AIM user.
	<<4/5/02; 2:02:57 PM by JES
		<<Make sure the user.callbacks.opInsert table exists before attempting to install the callback.
	<<4/2/02; 1:18:47 PM by DW
		<<Link in upstream callback.
	<<3/29/02; 1:31:36 AM by JES
		<<Register the buddySubscriberElement nodeType.
	<<3/27/02; 7:18:53 PM by JES
		<<Initialize notification prefs.
	<<3/27/02; 6:29:47 PM by JES
		<<Install the RPC handlers.
	<<3/27/02; 4:30:29 PM by JES
		<<Reset whenLastSubscribe for all the subscriptions to date (0), once. There was a bug which caused the dates to be incorrect, which would have meant a 24 hour lag for the opml pub/sub feature to work.
	<<3/25/02; 10:13:19 PM by JES
		<<Register the opInsert callback for my outline.
	<<3/25/02; 8:58:31 PM by JES
		<<Initialize flPlaySounds pref to true.
	<<3/25/02; 4:24:40 PM by JES
		<<Initialize callbacks table.
	<<3/22/02; 7:09:57 PM by JES
		<<Delete unnecessary nodeType regsitrations. Make sure that the address that *is* installed is correct.
	<<3/13/02; 8:03:52 AM by DW
		<<Created.
if not defined (user.radio.outliner) {
	new (tabletype, @user.radio.outliner)};
bundle { //init prefs
	if not defined (user.radio.outliner.prefs) {
		new (tabletype, @user.radio.outliner.prefs)};
	<<if not defined (user.radio.outliner.prefs.enabled)
		<<user.radio.outliner.prefs.enabled = false
	if not defined (user.radio.outliner.prefs.flPollingEnabled) {
		if defined (user.radio.outliner.prefs.enabled) {
			user.radio.outliner.prefs.flPollingEnabled = user.radio.outliner.prefs.enabled}
		else {
			user.radio.outliner.prefs.flPollingEnabled = false}};
	if defined (user.radio.outliner.prefs.enabled) {
		delete (@user.radio.outliner.prefs.enabled)};
	if not defined (user.radio.outliner.prefs.publicFolder) {
		user.radio.outliner.prefs.publicFolder = user.radio.prefs.wwwfolder + "instantOutliner" + file.getpathchar ()};
	if not defined (user.radio.outliner.prefs.ctSecsBetweenPolls) {
		user.radio.outliner.prefs.ctSecsBetweenPolls = 60};
	if not defined (user.radio.outliner.prefs.timeoutSecs) {
		user.radio.outliner.prefs.timeoutSecs = 15};
	if not defined (user.radio.outliner.prefs.flPlaySounds) {
		user.radio.outliner.prefs.flPlaySounds = true};
	if not defined (user.radio.outliner.prefs.flLogNotificationRequests) {
		user.radio.outliner.prefs.flLogNotificationRequests = true};
	if not defined (user.radio.outliner.prefs.flLogNotifications) {
		user.radio.outliner.prefs.flLogNotifications = true};
	bundle { //messaging sub-table
		if not defined (user.radio.outliner.prefs.messaging) {
			new (tabletype, @user.radio.outliner.prefs.messaging)};
		if not defined (user.radio.outliner.prefs.messaging.flEnabled) {
			user.radio.outliner.prefs.messaging.flEnabled = false};
		if not defined (user.radio.outliner.prefs.messaging.flAimEnabled) {
			user.radio.outliner.prefs.messaging.flAimEnabled = false};
		if not defined (user.radio.outliner.prefs.messaging.flJabberEnabled) {
			user.radio.outliner.prefs.messaging.flJabberEnabled = false};
		<<if not defined (user.radio.outliner.prefs.messaging.drivername)
			<<user.radio.outliner.prefs.messaging.drivername = "aim"
		<<if not defined (user.radio.outliner.prefs.messaging.screenname)
			<<user.radio.outliner.prefs.messaging.screenname = ""
		<<if not defined (user.radio.outliner.prefs.messaging.password)
			<<user.radio.outliner.prefs.messaging.password = ""
		bundle { //delete old sub-items
			if defined (user.radio.outliner.prefs.messaging.drivername) {
				delete (@user.radio.outliner.prefs.messaging.drivername)};
			if defined (user.radio.outliner.prefs.messaging.screenname) {
				delete (@user.radio.outliner.prefs.messaging.screenname)};
			if defined (user.radio.outliner.prefs.messaging.password) {
				delete (@user.radio.outliner.prefs.messaging.password)}}}};
bundle { //init subscriptions
	if not defined (user.radio.outliner.subscriptions) {
		new (tabletype, @user.radio.outliner.subscriptions)}};
bundle { //init subscribers
	if not defined (user.radio.outliner.subscribers) {
		new (tabletype, @user.radio.outliner.subscribers)}};
bundle { //init stats
	if not defined (user.radio.outliner.stats) {
		new (tabletype, @user.radio.outliner.stats)};
	if not defined (user.radio.outliner.stats.flNewBuddyOutline) {
		user.radio.outliner.stats.flNewBuddyOutline = true}};
bundle { //init callbacks
	if not defined (user.radio.outliner.callbacks) {
		new (tableType, @user.radio.outliner.callbacks)};
	if not defined (user.radio.outliner.callbacks.subscriptionChanged) {
		new (tableType, @user.radio.outliner.callbacks.subscriptionChanged)}};
bundle { //install opInsert callback
	if not defined (user.callbacks.opInsert) { //if the outliner has never been used, this table might not exist
		new (tableType, @user.callbacks.opInsert)};
	if not defined (user.callbacks.opInsert.radioOutliner) {
		user.callbacks.opInsert.radioOutliner = @radio.outliner.callbacks.opInsert}};
bundle { //install upstream callback
	if not defined (user.radio.callbacks.upstream.radioOutliner) {
		user.radio.callbacks.upstream.radioOutliner = @radio.outliner.callbacks.upstream}};
bundle { //buddy outline
	if not defined (user.radio.outliner.buddies) {
		new (outlinetype, @user.radio.outliner.buddies);
		user.radio.outliner.stats.flNewBuddyOutline = true}};
bundle { //register nodetypes
	if defined (Frontier.tools.data.nodeTypes.buddyOutlineElement) {
		if Frontier.tools.data.nodeTypes.buddyOutlineElement == @radio.outliner.buddyNode { //delete obsolete value
			delete (@Frontier.tools.data.nodeTypes.buddyOutlineElement)}};
	if not defined (Frontier.tools.data.nodeTypes.buddyOutlineElement) {
		Frontier.tools.data.nodeTypes.buddyOutlineElement = @radio.outliner.buddyOutlineElement};
	if not defined (Frontier.tools.data.nodeTypes.buddySubscriberElement) {
		Frontier.tools.data.nodeTypes.buddySubscriberElement = @radio.outliner.buddySubscriberElement}};
bundle { //install RPC handlers
	if not defined (user.betty.rpcHandlers.radioOutliner) {
		user.betty.rpcHandlers.radioOutliner = @radio.outliner.rpcHandlers};
	if not defined (user.soap.rpcHandlers.radioOutliner) {
		user.soap.rpcHandlers.radioOutliner = @radio.outliner.rpcHandlers}};
bundle { //install IM RPI handlers
	if not defined (user.im) {
		tcp.im.init ()};
	if not defined (user.im.rpiHandlers.radioOutliner) {
		user.im.rpiHandlers.radioOutliner = @radio.outliner.rpiHandlers}};
bundle { //delete obsolete stuff
	if defined (Frontier.tools.data.nodeTypes.buddyNode) {
		delete (@Frontier.tools.data.nodeTypes.buddyNode)};
	if defined (user.tools.nodeTypes.buddyNode) {
		delete (@user.tools.nodeTypes.buddyNode)};
	if defined (user.tools.nodeTypes.buddyOutlineElement) {
		delete (@user.tools.nodeTypes.buddyOutlineElement)}};
bundle { //misc
	if not defined (user.radio.outliner.stats.flResetSubscriptions) {
		user.radio.outliner.stats.flResetSubscriptions = true};
	if user.radio.outliner.stats.flResetSubscriptions {
		local (adr);
		for adr in @user.radio.outliner.subscriptions {
			adr^.whenLastSubscribe = date (0)};
		user.radio.outliner.stats.flResetSubscriptions = false}};
return (@user.radio.outliner)



This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.