From a27f593acea88d14199517dadf23b40dbc56ff2a Mon Sep 17 00:00:00 2001
From: Calin Burloiu
Date: Fri, 26 Aug 2011 18:36:33 +0300
Subject: [PATCH] content added; look modifications; side box content
---
.gitignore | 2 +
.htaccess | 2 +-
application/config/article.php | 10 ++++
application/config/routes.php | 3 +-
application/controllers/article.php | 36 ++++++------
application/controllers/catalog.php | 22 ++++---
application/core/Article_Controller.php | 54 +++++++++++++++---
application/language/english/ui_lang.php | 3 +-
application/views/article/english/about.php | 24 ++++----
application/views/article/english/contact.php | 10 ++++
.../views/article/english/install-plugins.php | 31 ++++++----
application/views/footer.php | 2 +-
application/views/header.php | 3 +
application/views/side_default.php | 25 ++++++++
css/default.css | 53 +++++++++++++----
img/SwarmPlayer-site.jpg | Bin 0 -> 11573 bytes
img/email-icon.png | Bin 0 -> 3074 bytes
17 files changed, 206 insertions(+), 74 deletions(-)
create mode 100644 application/config/article.php
create mode 100644 application/views/article/english/contact.php
create mode 100644 application/views/side_default.php
create mode 100644 img/SwarmPlayer-site.jpg
create mode 100644 img/email-icon.png
diff --git a/.gitignore b/.gitignore
index 51743a3..0923b67 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,8 @@ debug/*
docs/tmp/*
config.mk
*~
+*.exe
+*.dmg
*.zip
*.gz
*.bz2
diff --git a/.htaccess b/.htaccess
index 25b547b..619cfb5 100644
--- a/.htaccess
+++ b/.htaccess
@@ -20,5 +20,5 @@
RewriteEngine on
-RewriteCond $1 !^(index\.php|img|css|js|data|robots\.txt)
+RewriteCond $1 !^(index\.php|img|css|js|data|download|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
diff --git a/application/config/article.php b/application/config/article.php
new file mode 100644
index 0000000..8e6bc9f
--- /dev/null
+++ b/application/config/article.php
@@ -0,0 +1,10 @@
+lang->load('article');
- $title = $this->lang->line("article_$method");
- if ($title == FALSE)
- $title = $method;
- $descr = $this->lang->line("article_${method}_description");
- if ($descr == FALSE)
- $descr = '';
- $html_params = array( 'title' =>
- $title.' - '. $this->config->item('site_name'),
+ $html_params = array('title' => $this->title.' - '
+ . $this->config->item('site_name'),
'css' => array(
'jquery-ui.css'
- ),
- //'js' => array(),
- 'metas' => array('description'=>$descr)
+ ),
+ 'js' => array(
+ 'jquery.js',
+ 'jquery-ui.js'
+ ),
+ 'metas' =>
+ array('description'=>$this->metaDescription)
);
$this->load->library('html_head_params', $html_params);
@@ -44,8 +45,7 @@ class Article extends Article_Controller {
$this->load->view('header', array('selected_menu' => $method));
$main_params['content'] = $this->_load($method, $params);
- // TODO side
- $main_params['side'] = 'Side Box
TODO: Put side box content here
';
+ $main_params['side'] = $this->load->view('side_default.php', NULL, TRUE);
$this->load->view('main', $main_params);
$this->load->view('footer');
diff --git a/application/controllers/catalog.php b/application/controllers/catalog.php
index f3df836..087275d 100644
--- a/application/controllers/catalog.php
+++ b/application/controllers/catalog.php
@@ -45,8 +45,11 @@ class Catalog extends CI_Controller {
'css' => array(
'catalog.css',
'jquery-ui.css'
- ),
- //'js' => array(),
+ ),
+ 'js' => array(
+ 'jquery.js',
+ 'jquery-ui.js'
+ ),
//'metas' => array('description'=>'','keywords'=>'')
);
$this->load->library('html_head_params', $params);
@@ -58,8 +61,7 @@ class Catalog extends CI_Controller {
$this->load->view('header', array('selected_menu' => 'home'));
$main_params['content'] = $this->load->view('catalog/index_view', $data, TRUE);
- // TODO: side
- $main_params['side'] = 'Side Box
TODO: Put side box content here
';
+ $main_params['side'] = $this->load->view('side_default.php', NULL, TRUE);
$this->load->view('main', $main_params);
$this->load->view('footer');
@@ -72,7 +74,10 @@ class Catalog extends CI_Controller {
'css' => array(
'jquery-ui.css'
),
- //'js' => array(),
+ 'js' => array(
+ 'jquery.js',
+ 'jquery-ui.js'
+ ),
//'metas' => array('description'=>'','keywords'=>'')
);
$this->load->library('html_head_params', $params);
@@ -125,8 +130,11 @@ class Catalog extends CI_Controller {
'css' => array(
'catalog.css',
'jquery-ui.css'
- ),
- //'js' => array(),
+ ),
+ 'js' => array(
+ 'jquery.js',
+ 'jquery-ui.js'
+ ),
//'metas' => array('description'=>'','keywords'=>'')
);
$this->load->library('html_head_params', $params);
diff --git a/application/core/Article_Controller.php b/application/core/Article_Controller.php
index f98bb11..e6a50aa 100644
--- a/application/core/Article_Controller.php
+++ b/application/core/Article_Controller.php
@@ -3,30 +3,68 @@
* Library Article_Controller can be extended by a controller to be used for
* content pages that depend on the language.
*
- * Several language specific parameters can be coded in language files.
- * Non language specific parameters can be putted in config files.
+ * The page views are usually located in
+ * "application/views/article/$language/$method".
+ * Parameters:
+ *
+ * - Article Title: in language file 'article_lang.php':
+ * an entry named "article_$method".
+ * If not present "$method" is used as a name.
+ * - Article Meta Description: in language file..:
+ * an entry "article_${method}_description"
+ * - Helpers, Libraries: in config file 'article.php':
+ * an entry named "article_${method}_helpers" or "article_${method}_libraries"
+ * respectively with an array of helpers or libraries to be loaded for the
+ * article.
+ *
*
- * @category Library
+ * @category Base Controller Library
* @author CÄlin-Andrei Burloiu
*/
class Article_Controller extends CI_Controller {
+ protected $title = NULL;
+ protected $metaDescription = NULL;
+ protected $helpers = array();
+ protected $libraries = array();
+
function __construct()
{
parent::__construct();
+
+ // Language, title and description
+ $this->lang->load('article');
+
+ // Helpers and libraries.
+ $this->config->load('article');
}
/**
- * Override this with site specific information (header, menus...) and call
+ * Extend this with site specific information (header, menus...) and call
* $this->_load which is a generic method that loads the article.
* Both parameters must be passed to $this->_load.
*/
public function _remap($method, $params = array())
{
- $this->load->view('echo',
- array('output' => $this->_load($method, $params),
- 'clear' => TRUE)
- );
+ // Title
+ $this->title = $this->lang->line("article_$method");
+ if ($this->title === FALSE)
+ $this->title = $method;
+
+ // Meta Description
+ $this->metaDescription = $this->lang->line("article_${method}_description");
+ if ($this->metaDescription === FALSE)
+ $this->metaDescription = '';
+
+ // Helpers
+ $this->helpers = $this->config->item("article_${method}_helpers");
+ if ($this->helpers !== FALSE)
+ $this->load->helper($this->helpers);
+
+ // Libraries
+ $this->libraries = $this->config->item("article_${method}_library");
+ if ($this->libraries !== FALSE)
+ $this->load->library($libraries);
}
/**
diff --git a/application/language/english/ui_lang.php b/application/language/english/ui_lang.php
index adbbb0c..af184ee 100644
--- a/application/language/english/ui_lang.php
+++ b/application/language/english/ui_lang.php
@@ -4,9 +4,10 @@
$lang['ui_nav_menu_home'] = 'Home';
$lang['ui_nav_menu_install_plugins'] = 'Install Plugins';
$lang['ui_nav_menu_about'] = 'About';
+$lang['ui_nav_menu_help'] = 'Help';
+$lang['ui_nav_menu_contact'] = 'Contact';
$lang['ui_nav_menu_log_in'] = 'Log In';
$lang['ui_nav_menu_register'] = 'Register';
-$lang['ui_nav_menu_help'] = 'Help';
$lang['ui_search'] = 'Search';
diff --git a/application/views/article/english/about.php b/application/views/article/english/about.php
index af88507..9a9af2e 100644
--- a/application/views/article/english/about.php
+++ b/application/views/article/english/about.php
@@ -1,12 +1,12 @@
P2P-Next
-P2P-Next is an integrated FP7 EU project involving more than 20 partners, including University Politehnica of Bucharest (UPB).
+P2P-Next is an integrated FP7 EU project involving more than 20 partners, including University Politehnica of Bucharest (UPB).
P2P-Next aims to build the next generation Peer-to-Peer (P2P) content delivery platform.
This site provides information on UPB's contribution to the P2P-Next project activities. We are currently part of WP4 (Work Package 4 - IPvNext Networking Fabric) and WP8 (Work Package 8 - Living Lab Trials).
NextShare Video Plugins
- NextSharePC
- - a media-player browser plugin which uses VLC libraries for video rendering and incorporates P2P technology for VideoOnDemand (VoD) and LiveStreaming content delivery. The plugin is currently working with Internet Explorer and Firefox on Windows.
+ - a media-player browser plugin which uses VLC libraries for video rendering and incorporates P2P technology for VideoOnDemand (VoD) and LiveStreaming content delivery. The plugin is currently working with Internet Explorer and Firefox on Windows.
- SwarmPlayer
@@ -25,15 +25,15 @@
NextSharePC
- VLC
+ VLC
|
Windows
Mac OS X
|
- Mozilla Firefox 3.5 or greater
- Internet Explorer 7.0 or greater
+ Mozilla Firefox 3.5 or greater
+ Internet Explorer 7.0 or greater
|
@@ -41,7 +41,7 @@
SwarmPlayer
- HTML5
+ HTML5
|
Windows
@@ -49,8 +49,8 @@
Mac OS X
|
- Mozilla Firefox 3.5 or greater
- Internet Explorer 7.0 or greater
+ Mozilla Firefox 3.5 or greater
+ Internet Explorer 7.0 or greater
|
@@ -62,10 +62,6 @@
from feature films
from TechTalks technical presentations
or from various events from our faculty
- from karaoke parties in Automatic Control and Computers Faculty
+ from karaoke parties in Automatic Control and Computers Faculty
-All available movies are currently seeded by 5 peers with high bandwidth (1Gbit) kindly provided by the NCIT-Cluster. Anyone that watches a movie will take part in the swarm and ensure greater availability to provided content.
-
-
\ No newline at end of file
+All available movies are currently seeded by 5 peers with high bandwidth (1Gbit) kindly provided by the NCIT-Cluster. Anyone that watches a movie will take part in the swarm and ensure greater availability to provided content.
\ No newline at end of file
diff --git a/application/views/article/english/contact.php b/application/views/article/english/contact.php
new file mode 100644
index 0000000..7aad0db
--- /dev/null
+++ b/application/views/article/english/contact.php
@@ -0,0 +1,10 @@
+Contact and support
+In case there are issues getting NextShare plugins to work or for any other information or suggestion, please contact us:
+
+
+
E-mail:
+ -
+
+
+
+
\ No newline at end of file
diff --git a/application/views/article/english/install-plugins.php b/application/views/article/english/install-plugins.php
index 1ef7494..a8550af 100644
--- a/application/views/article/english/install-plugins.php
+++ b/application/views/article/english/install-plugins.php
@@ -1,11 +1,20 @@
-Install Plugins
-install plugins instructions
-install plugins instructions
-install plugins instructions
-install plugins instructions
-install plugins instructions
-install plugins instructions
-install plugins instructions
-install plugins instructions
-install plugins instructions
-install plugins instructions
\ No newline at end of file
+NextShare Plugins
+
+ - SwarmPlayer (based on HTML5)
+ - NextSharePC (based on VLC)
+
+
+
+To install SwarmPlayer video plugin which is based on HTML5 visit P2P-Next's SwarmPlayer Site. You should find a green button there labeled "Add Swarmplayer...", click it and follow the instructions.
+
+
+
+To install NextSharePC video plugin which is based on VLC do the following:
+
+ - If you are using:
+
Windows run the Windows installer.
a Mac run the Mac OS X installer.
+ Restart your browser and revisit the page.
+ Enjoy! ;)
+
\ No newline at end of file
diff --git a/application/views/footer.php b/application/views/footer.php
index dc32852..42c4948 100644
--- a/application/views/footer.php
+++ b/application/views/footer.php
@@ -1,3 +1,3 @@
diff --git a/application/views/header.php b/application/views/header.php
index 3ec4f1e..dccb112 100644
--- a/application/views/header.php
+++ b/application/views/header.php
@@ -14,6 +14,9 @@ endif ?>
+
+
diff --git a/application/views/side_default.php b/application/views/side_default.php
new file mode 100644
index 0000000..a6d0589
--- /dev/null
+++ b/application/views/side_default.php
@@ -0,0 +1,25 @@
+
+
+
\ No newline at end of file
diff --git a/css/default.css b/css/default.css
index 900e049..7f7507e 100644
--- a/css/default.css
+++ b/css/default.css
@@ -3,7 +3,7 @@ body
margin: 0;
font-family: Arial, Helvetica, sans-serif;
font-size: 75%;
- background: white url('/devel/img/bg.png') repeat-x left 90px;
+ background: white url('/devel/img/bg.png') repeat-x left 88px;
}
a:link
@@ -26,6 +26,19 @@ h1
margin-bottom: 8px;
}
+.inline
+{
+ vertical-align: middle;
+}
+
+.container-install
+{
+ width: 192px;
+ margin: 0 auto;
+ margin-top: 8px;
+ margin-bottom: 8px;
+}
+
#nav-menu
{/*
left: 0;
@@ -49,7 +62,7 @@ h1
#nav-menu a:link, #nav-menu a:visited
{
display: block;
- height: 14px;
+ height: 12px;
color: white;
text-align: center;
line-height: 100%;
@@ -58,18 +71,26 @@ h1
padding-bottom: 5px;
padding-left: 16px;
padding-right: 16px;
+ border: 1px solid transparent;
text-decoration: none;
}
+#nav-menu a:hover
+{
+ background-color: rgb(90,148,216);
+ border: 1px outset rgb(0,90,192);
+}
+#nav-menu a:active
+{
+ background-color: rgb(90,148,216);
+ border: 1px inset rgb(60,128,208);
+}
#nav-menu a.selected
{
background-color: rgb(60,128,208);
+ border: 1px inset rgb(60,128,208);
color: #FFE4B5;
font-weight: bold;
}
-#nav-menu a:hover, #nav-menu a:active
-{
- background-color: rgb(90,148,216);
-}
#header
{
@@ -78,9 +99,9 @@ h1
top: 24px;
left: 0;
width: 100%;*/
- height: 64px;
+ height: 62px;
background: #e5ecf5;
- border-bottom: 2px ridge rgb(60,128,208);
+ border: 1px outset #e5ecf5;
}
#logo
@@ -123,8 +144,10 @@ h1
font-weight: bold;
color: #000D60;
text-align: left;
- padding: 10px 0px 0px 10px;
+ padding: 0px 0px 0px 8px;
+ margin: 8px 0px 8px 0px;
background: url(/devel/img/header.png) top repeat-x;
+ outline: 1px outset rgb(108,162,222);
clear: both;
}
@@ -143,6 +166,11 @@ h1
vertical-align: middle;
}
+#main dt
+{
+ font-weight: bold;
+}
+
#content
{
float: left;
@@ -162,10 +190,11 @@ h1
#footer
{
clear: both;
- border-top: 2px ridge rgb(60,128,208);
- padding-top: 8px;
- padding-bottom: 8px;
+ border: 1px outset #e5ecf5;
+ padding-top: 0.5em;
+ padding-bottom: 0.4em;
background: #e5ecf5;
+ font-size: 0.9em;
text-align: center;
}
diff --git a/img/SwarmPlayer-site.jpg b/img/SwarmPlayer-site.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..d4dc354c217263a2ebc3a281addcbc6cafb64bd0
GIT binary patch
literal 11573
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
QIsgCw07*qoM6N<$g0zp#T5?
literal 0
HcmV?d00001
--
2.39.5