]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing
authorEvan Prodromou <evan@status.net>
Wed, 27 Jan 2010 21:37:43 +0000 (16:37 -0500)
committerEvan Prodromou <evan@status.net>
Wed, 27 Jan 2010 21:37:43 +0000 (16:37 -0500)
lib/uapplugin.php [new file with mode: 0644]
plugins/BlankAd/BlankAdPlugin.php [new file with mode: 0644]
plugins/BlankAd/redpixel.png [new file with mode: 0644]
theme/base/css/uap.css [new file with mode: 0644]

diff --git a/lib/uapplugin.php b/lib/uapplugin.php
new file mode 100644 (file)
index 0000000..ef35baf
--- /dev/null
@@ -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 (file)
index 0000000..0e2719a
--- /dev/null
@@ -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
new file mode 100644 (file)
index 0000000..26299a5
Binary files /dev/null and b/plugins/BlankAd/redpixel.png differ
diff --git a/theme/base/css/uap.css b/theme/base/css/uap.css
new file mode 100644 (file)
index 0000000..73be5f0
--- /dev/null
@@ -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%;
+}