diff options
-rw-r--r-- | lib/uapplugin.php | 204 | ||||
-rw-r--r-- | plugins/BlankAd/BlankAdPlugin.php | 124 | ||||
-rw-r--r-- | plugins/BlankAd/redpixel.png | bin | 0 -> 159 bytes | |||
-rw-r--r-- | theme/base/css/uap.css | 54 |
4 files changed, 382 insertions, 0 deletions
diff --git a/lib/uapplugin.php b/lib/uapplugin.php new file mode 100644 index 000000000..ef35bafbf --- /dev/null +++ b/lib/uapplugin.php @@ -0,0 +1,204 @@ +<?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> + * @author Evan Prodromou <evan@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); +} + +/** + * Abstract superclass for advertising plugins + * + * Plugins for showing ads should derive from this plugin. + * + * Outputs the following ad types (based on UAP): + * + * Medium Rectangle 300x250 + * Rectangle 180x150 + * Leaderboard 728x90 + * Wide Skyscraper 160x600 + * + * @category Plugin + * @package StatusNet + * @author Sarven Capadisli <csarven@status.net> + * @author Evan Prodromou <evan@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/ + */ + +abstract class UAPPlugin extends Plugin +{ + public $mediumRectangle = null; + public $rectangle = null; + public $leaderboard = null; + public $wideSkyscraper = null; + + /** + * Output our dedicated stylesheet + * + * @param Action $action Action being shown + * + * @return boolean hook flag + */ + + function onEndShowStatusNetStyles($action) + { + // XXX: allow override by theme + $action->cssLink('css/uap.css', 'base', 'screen, projection, tv'); + return true; + } + + /** + * Add a medium rectangle ad at the beginning of sidebar + * + * @param Action $action Action being shown + * + * @return boolean hook flag + */ + + function onStartShowAside($action) + { + if (!is_null($this->mediumRectangle)) { + + $action->elementStart('div', + array('id' => 'ad_medium-rectangle', + 'class' => 'ad')); + + $this->showMediumRectangle($action); + + $action->elementEnd('div'); + } + + return true; + } + + /** + * Add a leaderboard in the header + * + * @param Action $action Action being shown + * + * @return boolean hook flag + */ + + function onEndShowHeader($action) + { + if (!is_null($this->leaderboard)) { + $action->elementStart('div', + array('id' => 'ad_leaderboard', + 'class' => 'ad')); + $this->showLeaderboard($action); + $action->elementEnd('div'); + } + + return true; + } + + /** + * Add a rectangle before aside sections + * + * @param Action $action Action being shown + * + * @return boolean hook flag + */ + + function onStartShowSections($action) + { + if (!is_null($this->rectangle)) { + $action->elementStart('div', + array('id' => 'ad_rectangle', + 'class' => 'ad')); + $this->showRectangle($action); + $action->elementEnd('div'); + } + + return true; + } + + /** + * Add a wide skyscraper after the aside + * + * @param Action $action Action being shown + * + * @return boolean hook flag + */ + + function onEndShowAside($action) + { + if (!is_null($this->wideSkyscraper)) { + $action->elementStart('div', + array('id' => 'ad_wide-skyscraper', + 'class' => 'ad')); + + $this->showWideSkyscraper($action); + + $action->elementEnd('div'); + } + return true; + } + + /** + * Show a medium rectangle ad + * + * @param Action $action Action being shown + * + * @return void + */ + + abstract protected function showMediumRectangle($action); + + /** + * Show a rectangle ad + * + * @param Action $action Action being shown + * + * @return void + */ + + abstract protected function showRectangle($action); + + /** + * Show a wide skyscraper ad + * + * @param Action $action Action being shown + * + * @return void + */ + + abstract protected function showWideSkyscraper($action); + + /** + * Show a leaderboard ad + * + * @param Action $action Action being shown + * + * @return void + */ + + abstract protected function showLeaderboard($action); +} diff --git a/plugins/BlankAd/BlankAdPlugin.php b/plugins/BlankAd/BlankAdPlugin.php new file mode 100644 index 000000000..0e2719aed --- /dev/null +++ b/plugins/BlankAd/BlankAdPlugin.php @@ -0,0 +1,124 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Plugin for testing ad layout + * + * 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 Ads + * @package StatusNet + * @author Evan Prodromou <evan@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')) { + exit(1); +} + +/** + * Plugin for testing ad layout + * + * This plugin uses the UAPPlugin framework to output ad content. However, + * its ad content is just images with one red pixel stretched to the + * right size. It's mostly useful for debugging theme layout. + * + * To use this plugin, set the parameter for the ad size you want to use + * to true (or anything non-null). For example, to make a leaderboard: + * + * addPlugin('BlankAd', array('leaderboard' => true)); + * + * @category Plugin + * @package StatusNet + * @author Evan Prodromou <evan@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/ + * + * @seeAlso Location + */ + +class BlankAdPlugin extends UAPPlugin +{ + /** + * Show a medium rectangle 'ad' + * + * @param Action $action Action being shown + * + * @return void + */ + + protected function showMediumRectangle($action) + { + $action->element('img', + array('width' => 300, + 'height' => 250, + 'src' => common_path('plugins/BlankAd/redpixel.png')), + ''); + } + + /** + * Show a rectangle 'ad' + * + * @param Action $action Action being shown + * + * @return void + */ + + protected function showRectangle($action) + { + $action->element('img', + array('width' => 180, + 'height' => 150, + 'src' => common_path('plugins/BlankAd/redpixel.png')), + ''); + } + + /** + * Show a wide skyscraper ad + * + * @param Action $action Action being shown + * + * @return void + */ + + protected function showWideSkyscraper($action) + { + $action->element('img', + array('width' => 160, + 'height' => 600, + 'src' => common_path('plugins/BlankAd/redpixel.png')), + ''); + } + + /** + * Show a leaderboard ad + * + * @param Action $action Action being shown + * + * @return void + */ + + protected function showLeaderboard($action) + { + $action->element('img', + array('width' => 728, + 'height' => 90, + 'src' => common_path('plugins/BlankAd/redpixel.png')), + ''); + } +}
\ No newline at end of file diff --git a/plugins/BlankAd/redpixel.png b/plugins/BlankAd/redpixel.png Binary files differnew file mode 100644 index 000000000..26299a552 --- /dev/null +++ b/plugins/BlankAd/redpixel.png diff --git a/theme/base/css/uap.css b/theme/base/css/uap.css new file mode 100644 index 000000000..73be5f0c1 --- /dev/null +++ b/theme/base/css/uap.css @@ -0,0 +1,54 @@ +/** 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:none; +clear:both; +margin:0 auto; +margin-bottom:29px; +} + +#ad_leaderboard { +width:728px; +height:90px; + +margin:0 auto 18px; +float:none; +clear:both; +} + +#ad_wide-skyscraper { +width:160px; +height:600px; + +float:right; +margin-top:18px; +margin-right:8.25%; +} |