<?phpxml version="1.0"?>
	<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
		<channel>
			<title>Lightning Box Studios</title>
			<link>http://localhost/lightningboxstudios.com</link>
			<description>All RSS-Enabled Articles</description>
			<pubDate>Sat, 21 Nov 2009 11:36:15 -0500</pubDate>
			<image>
				<title>Main Newsfeed @ Lightning Box Studios</title>
				<url>http://localhost/lightningboxstudios.com/images/rss-logo.png</url>
				<link>http://localhost/lightningboxstudios.com</link>
			</image>

			<item>
				<title>Twitter Class (Updated 3/16)</title>
				<link>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=91#article_91</link>
				<guid>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=91#article_91</guid>
				<pubDate>Thu, 12 Mar 2009 09:35:50 -0400</pubDate>
				<description>&lt;p&gt;I added a Twitter class to the CMS, which will pull your tweets into the system for display. The first time the class is called, it will pull (up to / the last) 200 tweets from the &amp;quot;user_timeline.xml&amp;quot; feed that Twitter generates from your account, and store them in the database. It also records a &amp;quot;twitter_last_updated&amp;quot; time stamp, which it uses to determine whether it's time to check for new tweets. By default it waits 7 minutes, in an effort to keep the API count down.&lt;/p&gt; &lt;p&gt;Here is a barebones call:&lt;/p&gt; &lt;div class=&quot;code&quot;&gt;$twitter = new twitter;&lt;br /&gt; $twitter-&amp;gt;account_username = &amp;quot;username&amp;quot;;&lt;br /&gt; $twitter-&amp;gt;account_password = &amp;quot;password&amp;quot;;&lt;br /&gt; $twitter-&amp;gt;show_timeline(3);&lt;/div&gt; &lt;p&gt;&amp;nbsp;The &lt;strong&gt;account_username&lt;/strong&gt; and &lt;strong&gt;account_password&lt;/strong&gt; methods are used to set the credentials for the class, and the &lt;strong&gt;show_timeline()&lt;/strong&gt; method is the final call that generates the list of tweets. Adding a number to that method (&amp;nbsp;&lt;strong&gt;show_timeline(X)&lt;/strong&gt; )&amp;nbsp;will show X number of tweets, and will show 5 tweets by default.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;An exciting method of customization exists for the twitter class! Using the &lt;strong&gt;layout()&lt;/strong&gt; method, we can pass along some HTML&amp;nbsp;which will determine the code that gets generated for each tweet.&amp;nbsp;&lt;/p&gt; &lt;div class=&quot;code&quot;&gt;$display = '&amp;lt;div class=&amp;quot;padding10 text_bg_gradient_only all_lines&amp;quot;&amp;gt;$description&amp;lt;/div&amp;gt;&amp;lt;br /&amp;gt;';&lt;br /&gt; &lt;br /&gt; $twitter = new twitter;&lt;br /&gt; $twitter-&amp;gt;layout($display);&lt;br /&gt; $twitter-&amp;gt;show_timeline(3);&lt;/div&gt; &lt;div class=&quot;center_text&quot;&gt;&lt;img width=&quot;202&quot; height=&quot;292&quot; style=&quot;border: 1px solid rgb(0, 0, 0);&quot; src=&quot;http://localhost/lightningboxstudios.com/images/layout.jpg&quot; alt=&quot;&quot; /&gt;&lt;/div&gt; &lt;p&gt;We have set &lt;strong&gt;$display&lt;/strong&gt; to be a &amp;lt;div&amp;gt; with some stacked styles, containing the &lt;strong&gt;$description&lt;/strong&gt; variable. Note:&amp;nbsp;&lt;em&gt;If we wrap the HTML&amp;nbsp;in the single quote, we don't have to worry about escaping the double quotes&lt;/em&gt;. Once we have our layout determined, we can pass it to the class using &amp;quot;&lt;strong&gt;layout($display)&lt;/strong&gt;&amp;quot;. Just for comparison, here is the default display:&lt;/p&gt; &lt;div class=&quot;code&quot;&gt;&amp;lt;div class=&amp;quot;padding5&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;http://www.twitter.com/$screen_name&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;$profile_image_url&amp;quot; title=&amp;quot;$user_name&amp;quot; class=&amp;quot;floatL clearR padding2&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;div&amp;gt;$name&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;$description&amp;lt;div&amp;gt;From $source&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt; &lt;div class=&quot;center_text&quot;&gt;&lt;img width=&quot;205&quot; height=&quot;318&quot; style=&quot;border: 1px solid rgb(0, 0, 0);&quot; src=&quot;http://localhost/lightningboxstudios.com/images/default_layout.jpg&quot; alt=&quot;&quot; /&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;By default, the time stamp display is turned off. With the &lt;strong&gt;show_timestamp()&lt;/strong&gt; method, it will display something like this:&lt;/p&gt; &lt;div class=&quot;center_text&quot;&gt;&lt;img width=&quot;209&quot; height=&quot;108&quot; alt=&quot;&quot; style=&quot;border: 1px solid rgb(0, 0, 0);&quot; src=&quot;http://localhost/lightningboxstudios.com/images/time_stamp_default.jpg&quot; /&gt;&lt;/div&gt; &lt;p&gt;If we add some formatting to the &lt;strong&gt;show_timestamp()&lt;/strong&gt; method, we can tell it how to display. This uses PHP's &lt;strong&gt;date()&lt;/strong&gt; function, so you can find all the formatting options &lt;a href=&quot;http://www.php.net/manual/en/function.date.php&quot;&gt;here&lt;/a&gt;. Using the code below--&lt;/p&gt; &lt;div class=&quot;code&quot;&gt;$twitter = new twitter;&lt;br /&gt; $twitter-&amp;gt;show_timestamp(&amp;quot;m/d/Y @ g:ia&amp;quot;);&lt;br /&gt; $twitter-&amp;gt;show_timeline(1);&lt;/div&gt; &lt;p&gt;--will produce an output like this:&lt;/p&gt; &lt;div class=&quot;center_text&quot;&gt;&lt;img width=&quot;204&quot; height=&quot;112&quot; style=&quot;border: 1px solid rgb(0, 0, 0);&quot; src=&quot;http://localhost/lightningboxstudios.com/images/time_stamp_formatted.jpg&quot; alt=&quot;&quot; /&gt;&lt;/div&gt; &lt;div class=&quot;fsize125 fbold&quot;&gt;Update!&lt;/div&gt; &lt;p&gt;I&amp;nbsp;just realized that I forgot to post the variables details for use with the &lt;strong&gt;layout()&lt;/strong&gt; method. Here they are:&lt;/p&gt; &lt;div class=&quot;code&quot;&gt;&lt;strong&gt;$screen_name&lt;/strong&gt; - twitter account name, i.e., &amp;quot;lightningbox&amp;quot;&lt;br /&gt;&lt;strong&gt;$profile_image_url&lt;/strong&gt; - the URL for the avatar; use as '&amp;lt;img src=&amp;quot;$profile_image_url&amp;quot; /&amp;gt;'&lt;br /&gt;&lt;strong&gt;$user_name&lt;/strong&gt; - my profile's full name, i.e., &amp;quot;Brian A. Boyce&amp;quot;&lt;br /&gt;&lt;strong&gt;$location&lt;/strong&gt; - my profile's home location, i.e., &amp;quot;Sterling Heights, MI&amp;quot;&lt;br /&gt;&lt;strong&gt;$url &lt;/strong&gt;- my profile's website URL&lt;br /&gt;&lt;strong&gt;$description&lt;/strong&gt; - the body of the tweet itself&lt;br /&gt;&lt;strong&gt;$source&lt;/strong&gt; - where I'm tweeting from, i.e., &amp;quot;web&amp;quot;, &amp;quot;tweetdeck&amp;quot;, &amp;quot;tiny twitter&amp;quot;, etc&lt;/div&gt;</description>
			</item>

			<item>
				<title>User Deactivation Dates</title>
				<link>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=89#article_89</link>
				<guid>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=89#article_89</guid>
				<pubDate>Tue, 03 Mar 2009 00:22:42 -0500</pubDate>
				<description>&lt;p&gt;Have you ever needed to make sure that a specific user only had access until a certain date? Now you can have peace of mind!&lt;/p&gt; &lt;div class=&quot;center_text&quot;&gt;&lt;img width=&quot;396&quot; height=&quot;121&quot; alt=&quot;&quot; style=&quot;border: 1px solid rgb(0, 0, 0);&quot; src=&quot;http://localhost/lightningboxstudios.com/images/deact_01.jpg&quot; /&gt;&lt;/div&gt; &lt;p&gt;Each user account now has a &amp;quot;Deactivation Date&amp;quot;, which performs as simply as it sounds&lt;/p&gt; &lt;div class=&quot;center_text&quot;&gt;&lt;img width=&quot;470&quot; height=&quot;189&quot; alt=&quot;&quot; style=&quot;border: 1px solid rgb(0, 0, 0);&quot; src=&quot;http://localhost/lightningboxstudios.com/images/deact_02.jpg&quot; /&gt;&lt;/div&gt; &lt;p&gt;If you choose a date, and save the changes, the very next page that the user views will alert them to their new status, destroy their session and remove their cookies.&lt;/p&gt; &lt;div class=&quot;center_text&quot;&gt;&lt;img width=&quot;362&quot; height=&quot;113&quot; alt=&quot;&quot; style=&quot;border: 1px solid rgb(0, 0, 0);&quot; src=&quot;http://localhost/lightningboxstudios.com/images/deact_03.jpg&quot; /&gt;&lt;/div&gt;</description>
			</item>

			<item>
				<title>Updated User Security</title>
				<link>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=83#article_83</link>
				<guid>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=83#article_83</guid>
				<pubDate>Sun, 08 Feb 2009 14:54:18 -0500</pubDate>
				<description>&lt;p&gt;In an effort to help reduce the risk of &amp;quot;rogue&amp;quot;&amp;nbsp;users/administrators, the login module was updated. With these updates, an administrator will not have to worry about any disabled users keeping their authorization status:&lt;/p&gt; &lt;p class=&quot;fbold&quot;&gt;Part 1:&amp;nbsp;User Account Activation Check&lt;/p&gt; &lt;p&gt;Before now, a user's account status (active/inactive) was checked on a login attempt. If inactive, they were not allowed to login. A problem with using cookies for user logins is the fact that the user's account could be deactivated after they've successfully logged in; at that point they're a user that should not have the authorization that they do have.&lt;/p&gt; &lt;p&gt;Now, they also recieve a $_SESSION timestamp that marks when they were checked. That timestamp is checked against the system's cache_time_stamp (which is updated with database activity). If the timestamps do not match, the user's account status is checked again.&lt;/p&gt; &lt;p class=&quot;fbold&quot;&gt;Part 2:&amp;nbsp;Unauthorized User Logout&lt;/p&gt; &lt;p&gt;If a user is found to be deactivated while holding authorized cookies, they are now forcibly logged out of the system.&lt;/p&gt; &lt;p class=&quot;fbold&quot;&gt;Part 3:&amp;nbsp;User Login Attempt Logging&lt;/p&gt; &lt;p&gt;Each login attempt now gets recorded with a timestamp and IP&amp;nbsp;address. In the future, this list will be used to generate user statistics and whatnot. Another update that I plan to add within a week is a &amp;quot;login timeout&amp;quot;; with this, after a number of failed login attempts, a given IP&amp;nbsp;address will have to wait X number of minutes before they are allowed to login again.&lt;/p&gt;</description>
			</item>

			<item>
				<title>Automatic Page Caching</title>
				<link>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=82#article_82</link>
				<guid>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=82#article_82</guid>
				<pubDate>Mon, 26 Jan 2009 00:45:44 -0500</pubDate>
				<description>&lt;p&gt;In order to help relieve a high-traffic website's database server, &lt;strong&gt;automatic page caching&lt;/strong&gt; has been added.&lt;/p&gt; &lt;p&gt;The cache folder is checked when a page is requested:&amp;nbsp;if a cache-file exists, that file is served to the visitor's browser. Otherwise, the page is rendered, output to the browser, and then that HTML&amp;nbsp;output is saved to the cache folder. Any subsequent page views will pull the cached version of the page.&lt;/p&gt; &lt;p&gt;In order to keep the cache from serving out-of-date information, anytime the administrators update content on the site, the related cache files are removed. This way, visitors are always viewing the most up-to-date content. You'll know it's working when you see something like this in the page source:&lt;/p&gt; &lt;div class=&quot;code&quot;&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&amp;lt;!-- cached output from ./cache/561f0ea67f65041fca8d9ae97270b5b3 --&amp;gt;&lt;/div&gt;</description>
			</item>

			<item>
				<title>Basic ODBC Support Added</title>
				<link>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=81#article_81</link>
				<guid>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=81#article_81</guid>
				<pubDate>Thu, 08 Jan 2009 06:37:56 -0500</pubDate>
				<description>&lt;p&gt;A current project requires that information be pulled from a Microsoft Access file, and the only way for PHP to interface with an .mdb is to set up a &amp;quot;&lt;a target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/Database_Source_Name&quot;&gt;Database Source Name&lt;/a&gt;&amp;quot;, or DSN. The architecture of the 'query' class was designed to allow for interaction with multiple database-types, and so adding Basic ODBC support took less than two hours.&lt;/p&gt;
&lt;p&gt;Here is an example of the query class in action: Perhaps I wanted to query the default database for all the news articles written by John Doe. This can be accomplished like so:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;$query = new query;&lt;br /&gt;
$query-&amp;gt;select(&amp;quot;id, article_title&amp;quot;);&lt;br /&gt;
$query-&amp;gt;from(&amp;quot;news&amp;quot;);&lt;br /&gt;
$query-&amp;gt;where(&amp;quot;author = 'John Doe'&amp;quot;);&lt;br /&gt;
$query-&amp;gt;result();&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now, say I wanted to perform that query on a DSN connected to a local Microsoft Access file? I would add one line just after the class instantiation:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;$query = new query;&lt;br /&gt;
&lt;b&gt;$query-&amp;gt;useODBC(&amp;quot;database_file&amp;quot;);&lt;/b&gt;&lt;br /&gt;
$query-&amp;gt;select(&amp;quot;id, article_title&amp;quot;);&lt;br /&gt;
$query-&amp;gt;from(&amp;quot;news&amp;quot;);&lt;br /&gt;
$query-&amp;gt;where(&amp;quot;author = 'John Doe'&amp;quot;);&lt;br /&gt;
$query-&amp;gt;result();&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In this example, &amp;quot;database_file&amp;quot; is the name of the System DSN connection, and we're assuming that there is no username/password assigned to that connection. If there were, we would add those two variables after the connection name, like so:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;$query-&amp;gt;useODBC(&amp;quot;database_file&amp;quot;,&amp;quot;username&amp;quot;,&amp;quot;password&amp;quot;);&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In this way, Modules and custom programming running on the LBX CMS can interface with multiple databases with ease, and without worrying about changes in syntax.&lt;/p&gt;</description>
			</item>

			<item>
				<title>Per-Page FavIcons</title>
				<link>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=78#article_78</link>
				<guid>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=78#article_78</guid>
				<pubDate>Tue, 09 Dec 2008 21:49:41 -0500</pubDate>
				<description>&lt;p&gt;I updated one of the main file-includes tonight to look for custom favicons in the main &amp;quot;images&amp;quot; folder.&lt;/p&gt;
&lt;div class=&quot;center_text&quot;&gt;&lt;img width=&quot;715&quot; height=&quot;469&quot; style=&quot;border: 1px solid rgb(0, 0, 0);&quot; alt=&quot;&quot; src=&quot;http://localhost/lightningboxstudios.com/images/favicon_diagram.jpg&quot; /&gt;&lt;/div&gt;
&lt;p&gt;As you can see in the above diagram, the CMS will apply a specific favicon per-page, if there is an identically named .ico file.&amp;nbsp;For instance, I have a &amp;quot;cms.ico&amp;quot; and a &amp;quot;webdesign.ico&amp;quot; file in my images folder, along with the default &amp;quot;favicon.ico&amp;quot; file. When I'm on the page &amp;quot;cms.php&amp;quot;, the CMS will pull the name-matched icon (sans extension, of course) for that page.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;</description>
			</item>

			<item>
				<title>Updated &quot;Organize Gallery&quot; Page</title>
				<link>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=77#article_77</link>
				<guid>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=77#article_77</guid>
				<pubDate>Tue, 09 Dec 2008 21:49:41 -0500</pubDate>
				<description>&lt;p&gt;Due to Internet Explorer's inability to properly render the original &amp;quot;thumbnail grid&amp;quot; organization screen, I have changed to this new list-view. Entering photo captions and links are easier than ever, now that those options are available all from one page. Drag-n-drop reorganization is still possible -- just click+drag inside the white area around the thumbnail.&lt;/p&gt;
&lt;div class=&quot;center_text&quot;&gt;&lt;img width=&quot;743&quot; height=&quot;682&quot; style=&quot;border: 1px solid rgb(0, 0, 0);&quot; alt=&quot;&quot; src=&quot;http://localhost/lightningboxstudios.com/images/organize_gallery.jpg&quot; /&gt;&lt;/div&gt;</description>
			</item>

			<item>
				<title>Users and Usergroups Permissions Per-Page</title>
				<link>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=72#article_72</link>
				<guid>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=72#article_72</guid>
				<pubDate>Tue, 09 Dec 2008 21:49:41 -0500</pubDate>
				<description>&lt;p&gt;Have you ever needed to make a page viewable only to a certain usergroup, or to a specific set of users? Now, it's possible. &lt;br /&gt;
&lt;br /&gt;
A new set of per-page controls were added to the system today: &amp;quot;Allowed Usergroups&amp;quot; and &amp;quot;Allowed Users&amp;quot; are now options near the bottom of the &amp;quot;Edit Page&amp;quot; screen. These controls are of an on/off nature. If none of the groups or users are selected, then that particular page is viewable to the public. But, as soon as one item is marked, then the permissions are activated.&lt;/p&gt;
&lt;div class=&quot;center_text&quot;&gt;&lt;img width=&quot;552&quot; height=&quot;284&quot; alt=&quot;&quot; src=&quot;http://localhost/lightningboxstudios.com/images/permissions.png&quot; style=&quot;border: 1px solid rgb(0, 0, 0);&quot; /&gt;
&lt;p&gt;&amp;nbsp;You'll want to note that the permissions &amp;quot;overlap&amp;quot;. What I mean by that, is that if you set a page to be viewable to a usergroup, as well as a number of people, ALL the members of the group will be able to see the page, whether their individual users are selected or not. That might be the expected behavior, but I wanted to point that out, just in case there was a question.&lt;/p&gt;
&lt;/div&gt;</description>
			</item>

			<item>
				<title>Unified On-Page Controls</title>
				<link>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=71#article_71</link>
				<guid>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=71#article_71</guid>
				<pubDate>Tue, 09 Dec 2008 21:38:15 -0500</pubDate>
				<description>&lt;p&gt;The on-page controls were updated yesterday, to allow for a more unified look-and-feel. Now, all three content types have identical looking controls:&lt;/p&gt;
&lt;div class=&quot;center_text&quot;&gt;&lt;img width=&quot;595&quot; height=&quot;274&quot; style=&quot;border: 1px solid rgb(0, 0, 0);&quot; src=&quot;http://localhost/lightningboxstudios.com/images/onpage_controls.png&quot; alt=&quot;&quot; /&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;All three content types (Articles, Blocks and Landings) have pop-up control boxes, with these four buttons and their descriptions. I'll go over those options now:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;b&gt;EDIT:&lt;/b&gt; this is the standard &amp;quot;Edit&amp;quot; function. With this option, you can alter that particular piece of content&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;REMOVE:&lt;/b&gt; this option is rather self-explanatory. With the LBX CMS, however, it should be noted that removing a piece of content from a page does &lt;i&gt;not&lt;/i&gt; delete that content from the database.&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;COPY:&lt;/b&gt; this option will duplicate the piece of content, and remove the original from the page. This would be used more for taking existing content for a new page, and altering to fit the need.&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;DUPLICATE:&lt;/b&gt; this option will duplicate the content and keep the original on the page. This would be for creating multiple pieces of content from one that was already styled or arranged as desired.&lt;/li&gt;
&lt;/ul&gt;
Hopefully the new On-Page Controls are a benefit to our users.</description>
			</item>

			<item>
				<title>IP Blacklist/Word Filter Added to Form Processor</title>
				<link>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=69#article_69</link>
				<guid>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=69#article_69</guid>
				<pubDate>Wed, 26 Nov 2008 01:09:39 -0500</pubDate>
				<description>&lt;p&gt;A feature was added last week to the Form Processor (FP) which is supposed to capture bogus &amp;quot;contact form&amp;quot; submissions before they are passed on to the mail system. Any form that is available on the 'Net will eventually be discovered by spam-bots, and these updates to the FP are a way to combat unwanted submissions.&lt;/p&gt;
&lt;p&gt;Now, each form that is submitted has it's &amp;quot;Remote IP Address&amp;quot; checked against an IP list in the database. If the IP address exists, the form data submitted is written to the &amp;quot;blacklist&amp;quot; log (just in case it's a false positive, or for adding new words to the filter). If the IP address does not exist, each name/value pair passed through the FP are evaluated against the word list. Each occurance of a word has a given value assigned to it; if the combined values are high enough, the form data is sent to the &amp;quot;blacklist&amp;quot; log, and the submitter's IP address is added to the blacklist in the database. If the values aren't high enough to trigger the blacklist, the form data is emailed to the appropriate parties.&lt;/p&gt;
&lt;p&gt;When I am able, I will be adding an adminstrator's control page for the Blacklist/Word Filter. Until then, if a piece of spam happens to come through, I'll be adding new keywords to the master list, which is pushed out to all the sites using the Lightning Box CMS.&lt;/p&gt;</description>
			</item>

			<item>
				<title>Content &quot;Restore Points&quot; Added</title>
				<link>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=63#article_63</link>
				<guid>http://localhost/lightningboxstudios.com/updatedfeatures.php?abstract=63#article_63</guid>
				<pubDate>Mon, 27 Oct 2008 14:13:48 -0400</pubDate>
				<description>&lt;p&gt;A new feature was added to the &lt;span class=&quot;caps&quot;&gt;CMS&lt;/span&gt; over the weekend which allows you to create what we call &amp;ldquo;Restore Points&amp;rdquo; (RP) for articles, landings and blocks.&lt;/p&gt;
&lt;p&gt;When you edit an article, you will notice a new button at the bottom of the edit page that is labeled &amp;ldquo;Save &amp;amp; Create Restore Point&amp;rdquo;. When you click this, it will create a &amp;lsquo;Manual&amp;rsquo; RP in the database. If you click the normal &amp;ldquo;Save Changes&amp;rdquo; button, it will create an &amp;lsquo;Automatic&amp;rsquo; RP instead.&lt;/p&gt;
&lt;div class=&quot;center_text&quot;&gt;&lt;img src=&quot;http://localhost/lightningboxstudios.com/images/basecamp/restore_01.jpg&quot; alt=&quot;&quot; style=&quot;border: 1px solid rgb(0, 0, 0);&quot; /&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;What are the differences between the Manual and Automatic? We see the Manual RP as something like a &amp;lsquo;milestone&amp;rsquo; update, where you definitely want to save the previous state of the article. The Automatic RP will record minor changes, i.e., just in case there&amp;rsquo;s an accidental deletion of some content, you can rollback to the previous RP.&lt;/p&gt;
&lt;p&gt;Once a Restore Point is created, where do you find it? There&amp;rsquo;s now a drop-down located at the top of the &amp;lsquo;Edit&amp;rsquo; page that lists the various RP&amp;rsquo;s available. The drop-down list will only show the last 10 Manual RP&amp;rsquo;s, and the last 3 Automatic RP&amp;rsquo;s created.&lt;/p&gt;
&lt;div class=&quot;center_text&quot;&gt;&lt;img src=&quot;http://localhost/lightningboxstudios.com/images/basecamp/restore_02.jpg&quot; alt=&quot;&quot; style=&quot;border: 1px solid rgb(0, 0, 0);&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
			</item>
			<atom:link href="http://localhost/lightningboxstudios.com/rss.xml" rel="self" type="application/rss+xml" />
		</channel>
	</rss>