From 0f62f3a11dc5b9c09e2305a210f3151c371f8a9d Mon Sep 17 00:00:00 2001 From: Alain Reguera Delgado Date: Aug 24 2011 19:48:08 +0000 Subject: Update `trunk/Scripts/CentOS-Web' application: - Rename package from `Web' to `Apps' and update `centos-web.cgi' to reflect such name changing. --- diff --git a/Scripts/CentOS-Web/Apps/__init__.py b/Scripts/CentOS-Web/Apps/__init__.py new file mode 100755 index 0000000..e69de29 --- /dev/null +++ b/Scripts/CentOS-Web/Apps/__init__.py diff --git a/Scripts/CentOS-Web/Apps/xhtml.py b/Scripts/CentOS-Web/Apps/xhtml.py new file mode 100755 index 0000000..c313f41 --- /dev/null +++ b/Scripts/CentOS-Web/Apps/xhtml.py @@ -0,0 +1,469 @@ +#!/usr/bin/python +# +# Xhtml.output -- This module encapsulates XHTML output code needed by +# web applications. +# +# Copyright (C) 2009, 2010, 2011 The CentOS Project +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# ---------------------------------------------------------------------- +# $Id$ +# ---------------------------------------------------------------------- + +import os +import cgi +import cgitb; cgitb.enable() +from datetime import date + +qs = cgi.parse_qs(os.environ['QUERY_STRING']) + +now = date.today() + +def tag(name, attrs, indent=[8,1], content="", has_child=0): + """Returns XHTML tag definition. + + Arguments: + + name: The XHTML tag's name. Notice that this function doesn't + verify nor validate the XHTML tags you provide. It is up to + you write them correctly considering the XHTML standard + definition. + + attrs: The XHTML tag's attribute. Notice that this function + doesn't verify the attributes assignation to tags. You need to + know what attributes are considered valid to the tag you are + creating in order to build a well-formed XHTML document. Such + verification can be achived inside firefox browser through the + `firebug' plugin. + + indent: The XHTML tag's indentation (Optional). This argument is a + list of two numerical values. The first value in the list + represents the amount of horizontal spaces between the + beginning of line and the opening tag. The second value in + the list represents the amount of vertical spaces (new lines) + between tags. + + content: The XHTML tag's content (Optional). This argument + provides the information the tag encloses. When this argument + is empty, tag is rendered without content. + + has_child: The XHTML tag has a child? (Optional). This argument is + specifies whether a tag has another tag inside (1) or not (0). + When a tag has not a child tag, indentation is applied between + the tag content and the closing tag provoking an unecessary + spaces to be shown. Such kind of problems are prevented by + setting this option to `0'. On the other hand, when a tag has + a child tag inside, using the value `1' will keep the closing + tag indentation aligned with the opening one. + + This function encapsulates the construction of XHTML tags. Use + this function wherever you need to create XHTML tags. It helps to + standardize tag constructions and their final output and, this + way, produce consistent XHTML documents. + + """ + if indent[0] > 0: + h_indent = ' '*indent[0] + else: + h_indent = '' + + if indent[1] > 0: + v_indent = "\n"*indent[1] + else: + v_indent = '' + + output = v_indent + h_indent + '<' + str(name) + if len(attrs) > 0: + attr_names = attrs.keys() + attr_names.sort() + for attr_name in attr_names: + output += ' ' + str(attr_name) + '="' + str(attrs[attr_name]) + '"' + if content == '': + output += ' />' + else: + output += '>' + output += str(content) + if has_child == 1: + output += h_indent + '' + else: + output += '' + output += v_indent + + return output + + +def page_preamble(): + """Return XHTML code of page preamble. + + The page preamble sets the document type definition required by + the XHTML standard. + + """ + output = '' + "\n" + output += '' + "\n" + + return output + + +def page_logo(): + """Returns XHTML code of page logo. + + The page logo is displayed on the top-left corner of the page. We + use this area to show The CentOS Logo, the main visual + representation of The CentOS Project. In order to print the page + logo correctly, the image related must be 78 pixels of height. + + """ + attrs = [] + attrs.append({'id': 'logo'}) + attrs.append({'title': 'Community Enterprise Operating System', 'href': '/centos-web/'}) + attrs.append({'src': '/centos-web-pub/Images/centos-logo.png', 'alt': 'CentOS'}) + + return tag('div', attrs[0], [8,1], tag('a', attrs[1], [12,1], tag('img', attrs[2], [0,0], '', 0), 0), 1) + + +def page_ads_google(): + """Returns XHTML code of Google advertisement (468x60 pixels). + + """ + output = """ +
+ Google Advertisement + + +
+ +

+ """ + return output + + +def page_navibar_top(): + """Returns XHTML code of top-level navigation bar. + + The top-level navigation bar organizes links to the web + application The CentOS Project makes use of. Links in the + top-level navigation bar remain always visible, no matter what web + application you be visiting. + + Notice that web application differe one another and is not + convenient to point them all to this definition. Instead, a + specific definition for each web application will be created + (based on this definition) in order for them to give the + impression of being connected. In this process, the top-level + navigation bar is adapted to each web application characteristics + and the related tab is set as current. + + """ + names = [] + attrs = [] + + names.append('Home') + attrs.append({'accesskey': '1', 'title': 'The CentOS Project (Alt+Shift+1)', 'href': '/centos-web/'}) + names.append('Wiki') + attrs.append({'accesskey': '2', 'title': 'The CentOS Wiki (Alt+Shift+2)', 'href': '/centos-web/?app=wiki'}) + names.append('Lists') + attrs.append({'accesskey': '3', 'title': 'The CentOS Lists (Alt+Shift+3)', 'href': '/centos-web/?app=lists'}) + names.append('Forums') + attrs.append({'accesskey': '4', 'title': 'The CentOS Forums (Alt+Shift+4)', 'href': '/centos-web/?app=forums'}) + names.append('Projects') + attrs.append({'accesskey': '5', 'title': 'The CentOS Projects (Alt+Shift+5)', 'href': '/centos-web/?app=projects'}) + names.append('Bugs') + attrs.append({'accesskey': '6', 'title': 'The CentOS Bugs (Alt+Shift+6)', 'href': '/centos-web/?app=bugs'}) + names.append('Docs') + attrs.append({'accesskey': '7', 'title': 'The CentOS Documentation (Alt+Shift+7)', 'href': '/centos-web/?app=docs'}) + names.append('Downloads') + attrs.append({'accesskey': '8', 'title': 'The CentOS Downloads (Alt+Shift+8)', 'href': '/centos-web/?app=downloads'}) + names.append('Sponsors') + attrs.append({'accesskey': '9', 'title': 'The CentOS Downloads (Alt+Shift+9)', 'href': '/centos-web/?app=sponsors'}) + + if 'app' in qs: + focus = qs['app'][0] + else: + focus = names[0] + + output = page_navibar_tabs(names, attrs, focus) + output += page_line({'class': 'page-line white'}, [8,1]) + + return output + + +def page_navibar_tabs(names, attrs, focus="Home"): + """Returns navigation tabs. + + Arguments: + + names: List of tab names. + + attrs: List of dictionaries for each tab name inside the `names' + list. Dictionaries inside attrs argument contain the XHTML + link attributes (e.g., accesskey, title, and href) used by tab + names so they can be linkable once rendered. + + focus: Name of the tab marked as current. When no value is passed + to this argument the `Home' value is used as default value. + + """ + navibar_tabs = '' + + for i in range(len(names)): + content = tag('span', '', [0,0], str(names[i])) + content = tag('a', attrs[i], [16,1], content) + if str(names[i]).lower() == focus.lower(): + content = tag('span', {'class': 'current'}, [12,1], content, 1) + else: + content = tag('span', '', [12,1], content, 1) + navibar_tabs += content + + return tag('div', {'class': 'tabs1'}, [8,1], navibar_tabs, 1) + + +def page_ads_release(image='ads-sample-728x90.png', description='Release Advertisement'): + """Return last-release advertisement. + + The release advertisment is a 728x90 pixels image graphically + designed to promote the last releases of The CentOS Distribution. + This image is located on the header space, between the top-level + links and application specific links. This image changes each time + a new release is published from The CentOS Project and is only + visible at home page (i.e., the first time shown when + `http://www.centos.org/' domain is requested from a web browser). + + The place where the release advertisement is displayed on the web + is an area of high visual impact, so images appearing therein + should be carefully designed in consequence with it. The + frequency and priority of images in the rotation must be connected + somehow with The CentOS Distribution releasing process. + + Previous to consider the release advertisement as such, it was + reserved for sponsor advertisements. Nevertheless, sponsor + advertisements were moved to a page to their own through a link in + the top-level navegation bar. + + """ + attrs = [] + attrs.append({'class': 'ads-release'}) + attrs.append({'title': description, 'href': ''}) + attrs.append({'src': '/centos-web-pub/Images/' + image, 'alt': description}) + output = tag('div', attrs[0], [8,1], tag('a', attrs[1], [12,1], tag('img', attrs[2], [0,0], '', 0), 0), 1) + + return output + + +def page_userlinks(names=['Login'], attrs=[{'href': '/centos-web/?p=login'}]): + """Returns user links. + + Arguments: + + names: List of links you want to have. + + attrs: List of dictionaries with link attributes. In order for + links to be built correctly, both names and attrs lists must + coincide their indexes. + + The user links are specific to each web application. They are + shown in the right-top corner of the application navigation bar, + just over the application navigation tabs. + + """ + userlinks = '' + + for i in range(len(names)): + content = tag('a', attrs[i], [20,1], str(names[i]), 0) + if i == len(names) - 1: + content = tag('span', {'class': 'last'}, [16,1], content, 1) + else: + content = tag('span', '', [16,1], content, 1) + userlinks += content + + userlinks = tag('div', {'class': 'user'}, [12,1], userlinks, 1) + + return tag('div', {'class': 'links'}, [8,1], userlinks, 1) + + +def page_navibar_app(names=['Welcome'], attrs=[{'href':'/centos-web/?p=welcome'}]): + """Returns application's navigation bar.""" + if 'p' in qs: + focus = qs['p'][0] + else: + focus = names[0] + + navibar_app = page_navibar_tabs(names, attrs, focus) + navibar_app += page_line({'class': 'page-line white'}, [8,1]) + + return navibar_app + + +def page_breadcrumbs(): + """Returns page breadcrumbs. + + The page breadcrumbs record the last pages visited inside the + current web application. + + """ + links = '' + names = [] + attrs = [] + + names.append('Pagination') + attrs.append({'href': ''}) + names.append('Lists') + attrs.append({'href': ''}) + names.append('Headings') + attrs.append({'href': ''}) + names.append('Links') + attrs.append({'href': ''}) + + for i in range(len(names)): + if i == len(names) - 1: + content = tag('span', {'class':'last'}, [16,1], tag('a', attrs[i], [20, 1], names[i]), 1) + else: + content = tag('span', '', [16,1], tag('a', attrs[i], [20, 1], names[i], 0), 1) + links = links + content + + return tag('div', {'class': 'trail'}, [12,1], links, 1) + + +def page_line(attrs={'class': 'page-line'}, indent=[8,1]): + """Returns a division line.""" + page_line = tag('hr', {'style': 'display:none;'}, [0,0]) + page_line = tag('div', attrs, indent, page_line) + + return page_line + + +def page_title(title='The CentOS Project'): + """Returns page title.""" + title = 'The CentOS Project' + if 'app' in qs.keys(): + title += ' :: ' + qs['app'][0].capitalize() + return title + + +def page_language(language='en'): + """Returns page language.""" + return language + + +def page_keywords(keywords='centos, project, community, enterprise, operating system'): + """Returns page keywords.""" + return keywords + + +def page_description(description="Community Enterprise Operating tem"): + """Returns page description.""" + return description + + +def page_copyright(copyright_year=now.strftime("%Y"), + copyright_holder='The CentOS Project. All rights reserved.'): + """Returns page copyright.""" + return copyright_year + ' ' + copyright_holder + + +def page_license(): + """Retruns link to page license.""" + license = 'Creative Commons Attribution-Share Alike 3.0 Unported License.' + license = tag('a', {'href': 'http://creativecommons.org/licenses/by-sa/3.0/'}, [0,0], license) + return license + + +def page_metadata(): + """Returns page metadata.""" + metadata = tag('meta', {'http-equiv': 'content-type', 'content': 'text/html; charset=UTF-8'}, [4,1]) + metadata += tag('meta', {'http-equiv': 'content-style-type', 'content': 'text/css'}, [4,0]) + metadata += tag('meta', {'http-equiv': 'content-language', 'content': str(page_language())}, [4,1]) + metadata += tag('meta', {'name': 'keywords', 'content': str(page_keywords())}, [4,0]) + metadata += tag('meta', {'name': 'description', 'content': str(page_description())}, [4,1]) + metadata += tag('meta', {'name': 'copyright', 'content': 'Copyright © ' + str(page_copyright())}, [4,0]) + metadata += tag('title', '', [4,1], page_title()) + metadata += tag('link', {'href': '/centos-web-pub/stylesheet.css','rel': 'stylesheet', 'type': 'text/css'}, [4,1]) + + metadata += tag('link', {'href': '/centos-web-pub/Images/centos-fav.png', 'rel': 'shortcut icon', 'type': 'image/png'}, [4,0]) + + return tag('head', '', [0,1], metadata) + +def page_credits(): + """Returns page credits.""" + copyright = tag('p', {'class': 'copyright'}, [12,1], 'Copyright © ' + str(page_copyright())) + license = tag('p', {'class': 'license'}, [12,1], 'This website is licensed under a ' + str(page_license())) + credits = tag('img', {'src': '/centos-web-pub/Images/top.png', 'alt': 'Top'}, [0,0]) + credits = tag('a', {'title': 'Top', 'href': '#top'}, [16,1], credits) + credits = tag('div', {'class': 'top'}, [12,1], credits, 1) + credits = str(credits) + str(copyright) + str(license) + credits = tag('div', {'class': 'credits'}, [8,1], credits, 1) + + return credits + + +def page_content(): + """Returns page content.""" + content = tag('h1', {'class': 'title'}, [12, 1], page_title()) + content += tag('p', '', [12, 1], 'No content found for this page.') + return content + + +def page(): + """Returns page final output.""" + page_header = page_logo() + page_header += page_ads_google() + page_header += page_navibar_top() + if not 'app' in qs: + page_header += page_ads_release() + page_header += page_userlinks() + page_header += page_navibar_app() + page_header = tag('div', {'id': 'page-header'}, [4,1], page_header, 1) + + page_body = page_content() + page_line(indent=[12,1]) + page_body = tag('div', {'id':'content'}, [8,1], page_body, 1) + page_body = tag('div', {'id':'page-body'}, [4,1], page_body, 1) + + page_footer = page_line(indent=[4,1]) + page_footer += tag('div', {'id': 'page-footer'}, [4,1], page_credits(), 1) + + top = tag('a', {'name':'top'}, [0,1], '') + wrap = tag('div', {'id': 'wrap'}, [0,1], page_header + page_body + page_footer) + body = tag('body', '', [0,1], top + wrap) + + html = page_preamble() + html += tag('html', {'xmlns': 'http://www.w3.org/1999/xhtml', 'dir': 'ltr', + 'lang': str(page_language()), 'xml:lang': + str(page_language())}, [0,1], page_metadata() + body) + + return html + + +def main(): + """The Xhtml code of a complete page.""" + print 'Content-type: text/html' + "\n" + print page() diff --git a/Scripts/CentOS-Web/Web/__init__.py b/Scripts/CentOS-Web/Web/__init__.py deleted file mode 100755 index e69de29..0000000 --- a/Scripts/CentOS-Web/Web/__init__.py +++ /dev/null diff --git a/Scripts/CentOS-Web/Web/xhtml.py b/Scripts/CentOS-Web/Web/xhtml.py deleted file mode 100755 index c313f41..0000000 --- a/Scripts/CentOS-Web/Web/xhtml.py +++ /dev/null @@ -1,469 +0,0 @@ -#!/usr/bin/python -# -# Xhtml.output -- This module encapsulates XHTML output code needed by -# web applications. -# -# Copyright (C) 2009, 2010, 2011 The CentOS Project -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -import os -import cgi -import cgitb; cgitb.enable() -from datetime import date - -qs = cgi.parse_qs(os.environ['QUERY_STRING']) - -now = date.today() - -def tag(name, attrs, indent=[8,1], content="", has_child=0): - """Returns XHTML tag definition. - - Arguments: - - name: The XHTML tag's name. Notice that this function doesn't - verify nor validate the XHTML tags you provide. It is up to - you write them correctly considering the XHTML standard - definition. - - attrs: The XHTML tag's attribute. Notice that this function - doesn't verify the attributes assignation to tags. You need to - know what attributes are considered valid to the tag you are - creating in order to build a well-formed XHTML document. Such - verification can be achived inside firefox browser through the - `firebug' plugin. - - indent: The XHTML tag's indentation (Optional). This argument is a - list of two numerical values. The first value in the list - represents the amount of horizontal spaces between the - beginning of line and the opening tag. The second value in - the list represents the amount of vertical spaces (new lines) - between tags. - - content: The XHTML tag's content (Optional). This argument - provides the information the tag encloses. When this argument - is empty, tag is rendered without content. - - has_child: The XHTML tag has a child? (Optional). This argument is - specifies whether a tag has another tag inside (1) or not (0). - When a tag has not a child tag, indentation is applied between - the tag content and the closing tag provoking an unecessary - spaces to be shown. Such kind of problems are prevented by - setting this option to `0'. On the other hand, when a tag has - a child tag inside, using the value `1' will keep the closing - tag indentation aligned with the opening one. - - This function encapsulates the construction of XHTML tags. Use - this function wherever you need to create XHTML tags. It helps to - standardize tag constructions and their final output and, this - way, produce consistent XHTML documents. - - """ - if indent[0] > 0: - h_indent = ' '*indent[0] - else: - h_indent = '' - - if indent[1] > 0: - v_indent = "\n"*indent[1] - else: - v_indent = '' - - output = v_indent + h_indent + '<' + str(name) - if len(attrs) > 0: - attr_names = attrs.keys() - attr_names.sort() - for attr_name in attr_names: - output += ' ' + str(attr_name) + '="' + str(attrs[attr_name]) + '"' - if content == '': - output += ' />' - else: - output += '>' - output += str(content) - if has_child == 1: - output += h_indent + '' - else: - output += '' - output += v_indent - - return output - - -def page_preamble(): - """Return XHTML code of page preamble. - - The page preamble sets the document type definition required by - the XHTML standard. - - """ - output = '' + "\n" - output += '' + "\n" - - return output - - -def page_logo(): - """Returns XHTML code of page logo. - - The page logo is displayed on the top-left corner of the page. We - use this area to show The CentOS Logo, the main visual - representation of The CentOS Project. In order to print the page - logo correctly, the image related must be 78 pixels of height. - - """ - attrs = [] - attrs.append({'id': 'logo'}) - attrs.append({'title': 'Community Enterprise Operating System', 'href': '/centos-web/'}) - attrs.append({'src': '/centos-web-pub/Images/centos-logo.png', 'alt': 'CentOS'}) - - return tag('div', attrs[0], [8,1], tag('a', attrs[1], [12,1], tag('img', attrs[2], [0,0], '', 0), 0), 1) - - -def page_ads_google(): - """Returns XHTML code of Google advertisement (468x60 pixels). - - """ - output = """ -
- Google Advertisement - - -
- -

- """ - return output - - -def page_navibar_top(): - """Returns XHTML code of top-level navigation bar. - - The top-level navigation bar organizes links to the web - application The CentOS Project makes use of. Links in the - top-level navigation bar remain always visible, no matter what web - application you be visiting. - - Notice that web application differe one another and is not - convenient to point them all to this definition. Instead, a - specific definition for each web application will be created - (based on this definition) in order for them to give the - impression of being connected. In this process, the top-level - navigation bar is adapted to each web application characteristics - and the related tab is set as current. - - """ - names = [] - attrs = [] - - names.append('Home') - attrs.append({'accesskey': '1', 'title': 'The CentOS Project (Alt+Shift+1)', 'href': '/centos-web/'}) - names.append('Wiki') - attrs.append({'accesskey': '2', 'title': 'The CentOS Wiki (Alt+Shift+2)', 'href': '/centos-web/?app=wiki'}) - names.append('Lists') - attrs.append({'accesskey': '3', 'title': 'The CentOS Lists (Alt+Shift+3)', 'href': '/centos-web/?app=lists'}) - names.append('Forums') - attrs.append({'accesskey': '4', 'title': 'The CentOS Forums (Alt+Shift+4)', 'href': '/centos-web/?app=forums'}) - names.append('Projects') - attrs.append({'accesskey': '5', 'title': 'The CentOS Projects (Alt+Shift+5)', 'href': '/centos-web/?app=projects'}) - names.append('Bugs') - attrs.append({'accesskey': '6', 'title': 'The CentOS Bugs (Alt+Shift+6)', 'href': '/centos-web/?app=bugs'}) - names.append('Docs') - attrs.append({'accesskey': '7', 'title': 'The CentOS Documentation (Alt+Shift+7)', 'href': '/centos-web/?app=docs'}) - names.append('Downloads') - attrs.append({'accesskey': '8', 'title': 'The CentOS Downloads (Alt+Shift+8)', 'href': '/centos-web/?app=downloads'}) - names.append('Sponsors') - attrs.append({'accesskey': '9', 'title': 'The CentOS Downloads (Alt+Shift+9)', 'href': '/centos-web/?app=sponsors'}) - - if 'app' in qs: - focus = qs['app'][0] - else: - focus = names[0] - - output = page_navibar_tabs(names, attrs, focus) - output += page_line({'class': 'page-line white'}, [8,1]) - - return output - - -def page_navibar_tabs(names, attrs, focus="Home"): - """Returns navigation tabs. - - Arguments: - - names: List of tab names. - - attrs: List of dictionaries for each tab name inside the `names' - list. Dictionaries inside attrs argument contain the XHTML - link attributes (e.g., accesskey, title, and href) used by tab - names so they can be linkable once rendered. - - focus: Name of the tab marked as current. When no value is passed - to this argument the `Home' value is used as default value. - - """ - navibar_tabs = '' - - for i in range(len(names)): - content = tag('span', '', [0,0], str(names[i])) - content = tag('a', attrs[i], [16,1], content) - if str(names[i]).lower() == focus.lower(): - content = tag('span', {'class': 'current'}, [12,1], content, 1) - else: - content = tag('span', '', [12,1], content, 1) - navibar_tabs += content - - return tag('div', {'class': 'tabs1'}, [8,1], navibar_tabs, 1) - - -def page_ads_release(image='ads-sample-728x90.png', description='Release Advertisement'): - """Return last-release advertisement. - - The release advertisment is a 728x90 pixels image graphically - designed to promote the last releases of The CentOS Distribution. - This image is located on the header space, between the top-level - links and application specific links. This image changes each time - a new release is published from The CentOS Project and is only - visible at home page (i.e., the first time shown when - `http://www.centos.org/' domain is requested from a web browser). - - The place where the release advertisement is displayed on the web - is an area of high visual impact, so images appearing therein - should be carefully designed in consequence with it. The - frequency and priority of images in the rotation must be connected - somehow with The CentOS Distribution releasing process. - - Previous to consider the release advertisement as such, it was - reserved for sponsor advertisements. Nevertheless, sponsor - advertisements were moved to a page to their own through a link in - the top-level navegation bar. - - """ - attrs = [] - attrs.append({'class': 'ads-release'}) - attrs.append({'title': description, 'href': ''}) - attrs.append({'src': '/centos-web-pub/Images/' + image, 'alt': description}) - output = tag('div', attrs[0], [8,1], tag('a', attrs[1], [12,1], tag('img', attrs[2], [0,0], '', 0), 0), 1) - - return output - - -def page_userlinks(names=['Login'], attrs=[{'href': '/centos-web/?p=login'}]): - """Returns user links. - - Arguments: - - names: List of links you want to have. - - attrs: List of dictionaries with link attributes. In order for - links to be built correctly, both names and attrs lists must - coincide their indexes. - - The user links are specific to each web application. They are - shown in the right-top corner of the application navigation bar, - just over the application navigation tabs. - - """ - userlinks = '' - - for i in range(len(names)): - content = tag('a', attrs[i], [20,1], str(names[i]), 0) - if i == len(names) - 1: - content = tag('span', {'class': 'last'}, [16,1], content, 1) - else: - content = tag('span', '', [16,1], content, 1) - userlinks += content - - userlinks = tag('div', {'class': 'user'}, [12,1], userlinks, 1) - - return tag('div', {'class': 'links'}, [8,1], userlinks, 1) - - -def page_navibar_app(names=['Welcome'], attrs=[{'href':'/centos-web/?p=welcome'}]): - """Returns application's navigation bar.""" - if 'p' in qs: - focus = qs['p'][0] - else: - focus = names[0] - - navibar_app = page_navibar_tabs(names, attrs, focus) - navibar_app += page_line({'class': 'page-line white'}, [8,1]) - - return navibar_app - - -def page_breadcrumbs(): - """Returns page breadcrumbs. - - The page breadcrumbs record the last pages visited inside the - current web application. - - """ - links = '' - names = [] - attrs = [] - - names.append('Pagination') - attrs.append({'href': ''}) - names.append('Lists') - attrs.append({'href': ''}) - names.append('Headings') - attrs.append({'href': ''}) - names.append('Links') - attrs.append({'href': ''}) - - for i in range(len(names)): - if i == len(names) - 1: - content = tag('span', {'class':'last'}, [16,1], tag('a', attrs[i], [20, 1], names[i]), 1) - else: - content = tag('span', '', [16,1], tag('a', attrs[i], [20, 1], names[i], 0), 1) - links = links + content - - return tag('div', {'class': 'trail'}, [12,1], links, 1) - - -def page_line(attrs={'class': 'page-line'}, indent=[8,1]): - """Returns a division line.""" - page_line = tag('hr', {'style': 'display:none;'}, [0,0]) - page_line = tag('div', attrs, indent, page_line) - - return page_line - - -def page_title(title='The CentOS Project'): - """Returns page title.""" - title = 'The CentOS Project' - if 'app' in qs.keys(): - title += ' :: ' + qs['app'][0].capitalize() - return title - - -def page_language(language='en'): - """Returns page language.""" - return language - - -def page_keywords(keywords='centos, project, community, enterprise, operating system'): - """Returns page keywords.""" - return keywords - - -def page_description(description="Community Enterprise Operating tem"): - """Returns page description.""" - return description - - -def page_copyright(copyright_year=now.strftime("%Y"), - copyright_holder='The CentOS Project. All rights reserved.'): - """Returns page copyright.""" - return copyright_year + ' ' + copyright_holder - - -def page_license(): - """Retruns link to page license.""" - license = 'Creative Commons Attribution-Share Alike 3.0 Unported License.' - license = tag('a', {'href': 'http://creativecommons.org/licenses/by-sa/3.0/'}, [0,0], license) - return license - - -def page_metadata(): - """Returns page metadata.""" - metadata = tag('meta', {'http-equiv': 'content-type', 'content': 'text/html; charset=UTF-8'}, [4,1]) - metadata += tag('meta', {'http-equiv': 'content-style-type', 'content': 'text/css'}, [4,0]) - metadata += tag('meta', {'http-equiv': 'content-language', 'content': str(page_language())}, [4,1]) - metadata += tag('meta', {'name': 'keywords', 'content': str(page_keywords())}, [4,0]) - metadata += tag('meta', {'name': 'description', 'content': str(page_description())}, [4,1]) - metadata += tag('meta', {'name': 'copyright', 'content': 'Copyright © ' + str(page_copyright())}, [4,0]) - metadata += tag('title', '', [4,1], page_title()) - metadata += tag('link', {'href': '/centos-web-pub/stylesheet.css','rel': 'stylesheet', 'type': 'text/css'}, [4,1]) - - metadata += tag('link', {'href': '/centos-web-pub/Images/centos-fav.png', 'rel': 'shortcut icon', 'type': 'image/png'}, [4,0]) - - return tag('head', '', [0,1], metadata) - -def page_credits(): - """Returns page credits.""" - copyright = tag('p', {'class': 'copyright'}, [12,1], 'Copyright © ' + str(page_copyright())) - license = tag('p', {'class': 'license'}, [12,1], 'This website is licensed under a ' + str(page_license())) - credits = tag('img', {'src': '/centos-web-pub/Images/top.png', 'alt': 'Top'}, [0,0]) - credits = tag('a', {'title': 'Top', 'href': '#top'}, [16,1], credits) - credits = tag('div', {'class': 'top'}, [12,1], credits, 1) - credits = str(credits) + str(copyright) + str(license) - credits = tag('div', {'class': 'credits'}, [8,1], credits, 1) - - return credits - - -def page_content(): - """Returns page content.""" - content = tag('h1', {'class': 'title'}, [12, 1], page_title()) - content += tag('p', '', [12, 1], 'No content found for this page.') - return content - - -def page(): - """Returns page final output.""" - page_header = page_logo() - page_header += page_ads_google() - page_header += page_navibar_top() - if not 'app' in qs: - page_header += page_ads_release() - page_header += page_userlinks() - page_header += page_navibar_app() - page_header = tag('div', {'id': 'page-header'}, [4,1], page_header, 1) - - page_body = page_content() + page_line(indent=[12,1]) - page_body = tag('div', {'id':'content'}, [8,1], page_body, 1) - page_body = tag('div', {'id':'page-body'}, [4,1], page_body, 1) - - page_footer = page_line(indent=[4,1]) - page_footer += tag('div', {'id': 'page-footer'}, [4,1], page_credits(), 1) - - top = tag('a', {'name':'top'}, [0,1], '') - wrap = tag('div', {'id': 'wrap'}, [0,1], page_header + page_body + page_footer) - body = tag('body', '', [0,1], top + wrap) - - html = page_preamble() - html += tag('html', {'xmlns': 'http://www.w3.org/1999/xhtml', 'dir': 'ltr', - 'lang': str(page_language()), 'xml:lang': - str(page_language())}, [0,1], page_metadata() + body) - - return html - - -def main(): - """The Xhtml code of a complete page.""" - print 'Content-type: text/html' + "\n" - print page() diff --git a/Scripts/CentOS-Web/centos-web.cgi b/Scripts/CentOS-Web/centos-web.cgi index 9bdd60c..0606401 100755 --- a/Scripts/CentOS-Web/centos-web.cgi +++ b/Scripts/CentOS-Web/centos-web.cgi @@ -1,6 +1,6 @@ #!/usr/bin/python -from Web import xhtml +from Apps import xhtml def main(): xhtml.main()