summaryrefslogtreecommitdiff
path: root/plugins/UAP
diff options
context:
space:
mode:
authorSarven Capadisli <csarven@status.net>2010-01-21 18:18:32 +0100
committerEvan Prodromou <evan@status.net>2010-01-27 16:34:17 -0500
commit61a7a7b36b4f4b504dde880695dff5113dbe2a48 (patch)
tree78ad33fe1aa5dda5443af0c9c93489b1ad17e21d /plugins/UAP
parentc52951cef5508452733f84dec7815daf4aca1016 (diff)
Plugin for Universal Ad Package. Outputs four most widely used ad types.
Diffstat (limited to 'plugins/UAP')
-rw-r--r--plugins/UAP/UAPPlugin.php176
-rw-r--r--plugins/UAP/uap.css50
2 files changed, 226 insertions, 0 deletions
diff --git a/plugins/UAP/UAPPlugin.php b/plugins/UAP/UAPPlugin.php
new file mode 100644
index 000000000..13c101723
--- /dev/null
+++ b/plugins/UAP/UAPPlugin.php
@@ -0,0 +1,176 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * UAP (Universal Ad Package) plugin
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Action
+ * @package StatusNet
+ * @author Sarven Capadisli <csarven@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET') && !defined('LACONICA')) {
+ exit(1);
+}
+
+/**
+ * Outputs the following ad types (based on UAP):
+ * Medium Rectangle 300x250
+ * Rectangle 180x150
+ * Leaderboard 728x90
+ * Wide Skyscraper 160x600
+ *
+ * Any number of ad types can be used. Enable all using example:
+ * addPlugin('UAP', array(
+ * 'MediumRectangle' => '<script type="text/javascript">var foo = 1;</script>',
+ * 'Rectangle' => '<script type="text/javascript">var bar = 2;</script>',
+ * 'Leaderboard' => '<script type="text/javascript">var baz = 2;</script>',
+ * 'WideSkyscraper' => '<script type="text/javascript">var bbq = 4;</script>'
+ * )
+ * );
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Sarven Capadisli <csarven@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+class UAPPlugin extends Plugin
+{
+ public $MediumRectangle = null;
+ public $Rectangle = null;
+ public $Leaderboard = null;
+ public $WideSkyscraper = null;
+
+ function __construct($uap = array())
+ {
+ $this->uap = $uap;
+
+ parent::__construct();
+ }
+
+ function onInitializePlugin()
+ {
+ foreach($this->uap as $key => $value) {
+ switch(strtolower($key)) {
+ case 'MediumRectangle': default:
+ $this->MediumRectangle = $value;
+ break;
+ case 'Rectangle':
+ $this->Rectangle = $value;
+ break;
+ case 'Leaderboard':
+ $this->Leaderboard = $value;
+ break;
+ case 'WideSkyscraper':
+ $this->WideSkyscraper = $value;
+ break;
+ }
+ }
+ }
+
+ function onEndShowStatusNetStyles($action)
+ {
+ $action->cssLink(common_path('plugins/UAP/uap.css'),
+ null, 'screen, projection, tv');
+ return true;
+ }
+
+ //MediumRectangle ad
+ function onStartShowAside($action)
+ {
+ if (!$this->MediumRectangle) {
+ return true;
+ }
+
+ $this->showAd($action, array('id' => 'ad_medium-rectangle'),
+ $this->MediumRectangle);
+
+ return true;
+ }
+
+/*
+ //Rectangle ad
+ function onEndShowSiteNotice($action)
+ {
+ if (!$this->Rectangle) {
+ return true;
+ }
+
+ $this->showAd($action, array('id' => 'ad_rectangle'),
+ $this->Rectangle);
+
+ return true;
+ }
+*/
+
+ //Leaderboard and Rectangle ad
+ function onStartShowHeader($action)
+ {
+ if ($this->Leaderboard) {
+ $this->showAd($action, array('id' => 'ad_leaderboard'),
+ $this->Leaderboard);
+ }
+
+ if ($this->Rectangle) {
+ $this->showAd($action, array('id' => 'ad_rectangle'),
+ $this->Rectangle);
+ }
+
+ return true;
+ }
+
+ //WideSkyscraper ad
+ function onEndShowAside($action)
+ {
+ if (!$this->WideSkyscraper) {
+ return true;
+ }
+
+ $this->showAd($action, array('id' => 'ad_wide-skyscraper'),
+ $this->WideSkyscraper);
+
+ return true;
+ }
+
+ //Output ad container
+ function showAd($action, $attr=array(), $value)
+ {
+ $classes = ($attr['class']) ? $attr['class'].' ' : '';
+
+ $action->elementStart('div', array('id' => $attr['id'],
+ 'class' => $classes.'ad'));
+ $action->raw($value);
+ $action->elementEnd('div');
+ }
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'UAP',
+ 'version' => STATUSNET_VERSION,
+ 'author' => 'Sarven Capadisli',
+ 'homepage' => 'http://status.net/wiki/Plugin:UAP',
+ 'rawdescription' =>
+ _m('Outputs ad placements based on Universal Ad Package'));
+ return true;
+ }
+}
diff --git a/plugins/UAP/uap.css b/plugins/UAP/uap.css
new file mode 100644
index 000000000..90abe5180
--- /dev/null
+++ b/plugins/UAP/uap.css
@@ -0,0 +1,50 @@
+/** Universal Ad Package styles:
+ * Medium Rectangle 300x250
+ * Rectangle 180x150
+ * Leaderboard 728x90
+ * Wide Skyscraper 160x600
+ *
+ * @package StatusNet
+ * @author Sarven Capadisli <csarven@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+
+.ad {
+border:1px solid #CCC;
+float:left;
+}
+
+#ad_medium-rectangle {
+width:300px;
+height:250px;
+
+margin-left:1.35%;
+margin-bottom:18px;
+}
+
+#ad_rectangle {
+width:180px;
+height:150px;
+
+float:right;
+margin-right:18px;
+}
+
+#ad_leaderboard {
+width:728px;
+height:90px;
+
+margin:29px 18px 0 0;
+clear:both;
+}
+
+#ad_wide-skyscraper {
+width:160px;
+height:600px;
+
+margin-top:18px;
+margin-left:8.5%;
+}