From RoboWiki
The current website can be found at http://www.psurobotics.org/
- The original club website can be found on the Penn State server here as well as on this server.
- The original mini grand/AUVSI team page can still be found here.
- The following is a design and architecture overview of the club's internal web resources
The Pennsylvania State University, University Park Robotics Club is an organization created to educate members, as well as compete in several challenges, on the subject of autonomous robotics. As the group has grown over the years, the need for clear documentation to aid the development cycle as well as enable members to re-use past technologies is greatly needed. The current club’s website lacks the ability to share media both internally with other members, as well as the public in terms of public relations materials. The solution is to enable user generated content as well as a pragmatic approach to the front-end that enables administrators to release information and media without any technical knowledge or extra tools apart from a web browser and account access.
Contents |
[edit] Major Site Links
- Club splash page: here
- Club news: here
- Club admin blog page: here
- Club wiki: here
- Club shared docs: here
- Club media: here
[edit] Current website structure and administration
The current website format has two official sections: The formal website, which is based on a customized WordPress blog, and this wiki, known as the Robo Wiki. The addresses are simply www.psurobotics.org/web/ for the website, and www.psurobotics.org/wiki/ for the wiki. The current domain name of the website, www.psurobotics.org is owned by Anthony Cascone and the web server is based on Jeremy Bridon's personal web server.
Any server-side administration may be done with a special server-side account (ask Jeremy for an account). To access the server, use an SSH client and log into www.psurobotics.org; The root directory is actually the parent of the website, and also contains the other hosted content. Ignore them and change directory into the psurobotics.org/ folder. From here, you will see five folders and a file:
- OldSite/ - The old website
- web/ - The club website/blog
- images/ - The photo album directory and software
- splash/ - The splash page (Static HTML)
- tools/ - Several pages for tools access (Static HTML and bits of PHP)
- index.php - The landing page which redirects to the above mentioned splash page
- wiki/ - The Robo Wiki
Any web-side administration, such as changing the website content, wiki, or photo album, are done via the browser. Simply create an account, and ask Jeremy or any administrator, for administrative privileges.
To administrate on the club website, please use administrator panel page www.psurobotics.org/web/wp-admin.
The current YouTube account for Penn State Robotics is PSURobotics, currently owned by Jeremy Bridon. Contact him to upload a video.
[edit] Internal tools
You can find the source code files (Program: cs, PersonalPage: cs) for querying information on member users and generating a *.csv excel file.
[edit] Problem Definition
The current website, found at www.psurobotics.org, was originally designed in 2004 during the club’s initial foundation. The site was designed with static HTML pages and must be updated manually by the web master if needed. Though the site does provide basic content, it does not allow for any user-created content to be published, as well as does not provide easy access to media such as photos and videos. As the club’s needs have grown, the site has not yet met them. The separation of “external” and “internal” information has not yet been clearly defined, as well as sub-projects such as the current Mini Grand Challenge and AUVSI groups are separate from the main site. Tools such as subversion and media management are non-existent and prevent the club from centralizing key content.
[edit] General Solution
To solve the new needs of the club, a full website redesign is needed. Both a new front-end and a back-end are needed. The definition of the new front-end encapsulates all components of the site that are publicly viewable. This includes both the all web content and the user generated content. Components such as media, calendar, splash page, news, contacts, and the wiki are thus front-end materials. The backend components are all internal tools used by the club but which are not publicly available. This contains subversion, management tools, member roster, list-serve management and shared document resources. The goal is to help the administrators of the club save time and energy as well as centralize all necessary tools into one location.
[edit] Front-End Web Content
The new website will focus much more heavily on attempting to represent the club’s image as professionally as possible. All information should be at most two levels of access away from the central page. The new web content, as well as stylization, should be both minimalistic yet content-rich, letting the user access information such as news to past and current projects within seconds of arrival. The content of the front-end web site should be organized by the following list:
- Splash page: The first page visited by users, showing the clubs logo as well as moto, leading them into the front page. This is simply a lead-in to main content.
- Home page: The central page that contains simple information about the club as well as news. This page will feature an RSS link to all recent news. This page will also contain quick links to all current sub-projects.
- Archives: An archive of all past news, not to be confused with past media.
- Press Releases: Similar to a page of news, except the format will be focusing on major club events with an emphasis of a professional form.
- Projects Page: A list of all past and current projects.
- Awards and Recognition: A list of all awards won as well as departmental/private company support. Again, this is to emphasize professionalism and success.
- Media: A dynamically generated media management page that provides both images and (embedded) videos based on previous years and events.
- Calendar: A calendar of events and meeting times with locations.
- Executive Team: A quick list of contacts and links to wiki pages for all executive members.
- Contact Us/Mailing List: Not to be confused with the information on the Executive Team page, but a page in which a visitor may be able to contact us through a simple form as well as add themselves to remove themselves from the List-serve.
- Wiki: A link to the wiki (user generated content). Please read section V
[edit] Back-End Administrative Tools
The club uses several tools outside of the club’s own resource such as the Penn State Lists Management System (lists.psu.edu, list-serve). Relatively basic tools such as source management (The AUVSI’s team SVN system) are completely non-existent on the current server and must be outsourced to other services such as SourceForge. Many of these tools should be moved to full ownership of the club’s administrators for the sake of centralization and flexibility. Also, certain tools can be wrapped via a web interface for ease-of-use. The solution is to centralize and/or create the below services which are not public, but accessible to only those with privileges, checked via the Penn State WebAccess (http://aset.its.psu.edu/docs/webaccess/). Certain services, such as subversion, should have a front-end to let the public browse the code, similar to the SVN Browse feature in SourceForge projects.
- List Server Interface: A PHP front-end that interfaced with the current List-Serve mailing list via the commands-by-mail interface.
- Member roster: Register and maintain a list of members, connected to the List-Serve mailing list as well as registers which students showed at which meetings.
- Code management: SVN subversion with an online (public) code browser.
- Sub-project wiki sections: Some sub-projects may require sections of the wiki dedicated to their own needs.
- Sub-project sites: Some sub-projects may require their own smaller sections of the website.
- Google applications: Many Google applications, such as calendar and document editors, are able to be embedded into sites. Also, please note that instead of creating a new account system for administrator-level students, user access will be checked with an internal list versus the Penn State WebAccess
[edit] Source Control & Browser
The source control system is managed by the host, Dreamhost.com, through SVN. SVN accounts are managed by the host's owner, Jeremy Bridon. A publicicly viewable online source code browser canbe found at our subversion browser. Note that the SVN browser is based on WebSVN and implements a custom template we have modified.
[edit] Wiki-Documentation
The wiki site, or a site for user generated content, will focus on tutorials as well as documentation on general subjects. Content will range from concepts (Such as what is the difference between C and C++) as well as specifics (such as how to interface with a servo on a given microcontroller). Articles on competitions, previously built robots, as well as member information may also be created. Templates will be provided as well as peer-reviews will be suggested for use.
[edit] Conclusion
The current website has been transferred to a new server, independent of the old University Park Club Services servers. With this move, we expect a full website re-design as well as plenty of new content for the future semester. For those who are given SSH access to the current server (i686, GNU/Linux 2.4.32, DreamHost server) you must change directory to /home/jbridon/psurobotics.org to see the directory for psurobotics.org This is due to server ownership. Please note the domain name www.psurobotics.org is owned by Anthony Cascone and the server space provided for free from Jeremy Bridon. Though these are under private ownership, we let the club maintain and control the full resources, but please be responsible and courteous.
[edit] Wiki-Specific modifications
As mentioned before, there are several custom tools running on this MediaWiki installation. The following sub-sections explain the exact modifications to help other users build similar MediaWiki installations.
[edit] Custom Theme
Special code is injected right below the page title in "MonoTheme.php":
<small>The Pennsylvania State University Robotics Club RoboWiki</small>
The css file for MonoTheme is also edited to provide special formatting for the RoboWiki theme.
[edit] Custom LocalSettings.php
Several small modifications are done onto the LocalSettings.php file to prevent certain server issues, allow special files to be uploaded, and other smaller feature changes.
$wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg', 'pdf', 'c++', 'cc', 'c', 'cs', 'cpp' ); $wgUseTidy = true;
[edit] Custom Sidebar
The Sidebar has had heavy modification; the following code is it's current state:
* Navigation ** mainpage|Main Page ** http://www.psurobotics.org/|PSU Robotics ** Template:Index|Site Index ** Special:Categories|Categories ** AllPages|All Pages ** randompage-url|randompage
[edit] Meta Data
Meta data has been injected into the main theme's Index.php file for helping search engines better crawl the site.
<meta name="description" content="PSU Penn State Pennsylvania
State University Robotics Club Robo RoboWiki Wiki Mini Grand Challenge
MGC AUVSI IGVC Arduino Programming Trinity Fire Fighting Challenge
Mouse Maze" />
[edit] Extensions
- Cite: Used for citation based syntax
- GeSHi: Multi-language syntax-highlighting solution
- ReCAPTCHA: Bot/spam-prevention system for registration and article generation
- Google Search: Allows searching of the wiki and general site
[edit] Added Wiki Security for 2009/2010 IGVC team
To let certain sections of the RoboWiki remain private, thus only viewable from certain accounts, a hack was introduced. This functionality does not exist out-of-the-box for MediaWiki, nor is it recommended to implement due to the underlying security and optimization conflicts. Our hack was introduced into the "index.php" root source, right after the MediaWiki object is instanced.
// Load up the page name file... $handle = fopen('permissions_pages.txt', 'r'); if($handle == FALSE) exit('Could not open permissions_pages.txt'); // Create the valid users name array $fileString = fread($handle, 1000); // 1,000 chars $protectedPages = explode(',', $fileString); // Close the file fclose($handle); if(strlen($title) != 0) { // Are we on a page that is in question? $inQuestion = false; foreach($protectedPages as $pageName) { // Say page name //echo('Page prot: !!!'.$pageName.'!!!'); // If match if($title == $pageName) { //echo('Protected/private page. '); $inQuestion = true; } } // If we are on a page that is in question... if($inQuestion) { // Load up the user names file... $handle = fopen('permissions_names.txt', 'r'); if($handle == FALSE) exit('Could not open permissions_names.txt'); // Create the valid users name array $fileString = fread($handle, 1000); // 1,000 chars $validUsers = explode(',', $fileString); // Close the file fclose($handle); // Find if this user is in "the list" $inList = false; foreach($validUsers as $userName) { // If match; NOT performant, but it works :-/ global $wgUser; //echo('_'.$userName.'_'); if($userName == $wgUser->getName()) $inList = true; } // If on hidden page and a not a valid user... if($inList == false) exit("Hello there! I'm sorry to tell you, but only specials\ users may access this page. This page is probably for the IGVC team.\ If you believe this is an error, let us know. Contact\ jgbridon@gmail.com for help."); } }
[edit] 2010 Summer Revisions
On the 2nd year anniversary of the Penn State RoboWiki launch, the web staff will be re-skinning the site, as well as better organizing current content. A method of article-planning will be introduced, to better support future wiki growth. More formal tutorials, that are better inter-connected will also be introduced.
The target audience will now be those interested in table-top robotics, and the related hardware, though the site will still be used for secondary projects (Such as the Mini Grand Challenge and AUVSI IGVC).
Smaller changes to the main club website will also be introduced, such as a re-skinning of the web album.
Current changes are:
- New skin basis - with heavy custom modification (Done!)
- Splash page now includes changing images (Done!)
- Club YouTube account actually looks like a professional account (Done!)
- Club position emails (president@psurobotics.org, contact@psurobotics.org, etc..) (Done!)
- Note: You must manually forward emails (Done!)
- Organized all club files outside of the docs.psurobotics.org domain to psurobotics.org/files (Done!)
- Added wiki subdomain at wiki.psurobotics.org (Done!)
- All logos are now consistent across the wiki and site (Done!)
- Fixed 404 redirect error (Done!)
- Added new press releases to site (Done!)
- Cleaned sponsorship (Done!)
- Updated press release content (Done!)
- Added competitive programming sections (Done!)
- Remade online SVN browswer - see svn.psurobotics.org (Done!)
- Note: The template is again custom-made; make sure to backup (Done!)
- Updated all google analytics code (Done!)
- Not yet verified correct validation
- Wiki content is better organized (Done!)
- Added Google code to the images section of site (Done!)
- Need to add links back to the robowiki from other robotics sites (arduino.cc --> psurobotics.org) (Done!)
