Compare commits

..

2 Commits

Author SHA1 Message Date
sdv%sparc.spb.su
53866ece4f workaround for bug=30927
git-svn-id: svn://10.0.0.236/branches/M15-patch@72213 18797224-902f-48f8-a5cc-f745e15eee43
2000-06-14 11:34:36 +00:00
(no author)
350be55313 This commit was manufactured by cvs2svn to create branch 'M15-patch'.
git-svn-id: svn://10.0.0.236/branches/M15-patch@52901 18797224-902f-48f8-a5cc-f745e15eee43
1999-11-06 02:47:16 +00:00
381 changed files with 105 additions and 16020 deletions

View File

@@ -0,0 +1,105 @@
/*
The contents of this file are subject to the Mozilla Public
License Version 1.1 (the "License"); you may not use this file
except in compliance with the License. You may obtain a copy of
the License at http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS
IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
implied. See the License for the specific language governing
rights and limitations under the License.
The Original Code is mozilla.org code.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are
Copyright (C) 1999 Sun Microsystems, Inc. All
Rights Reserved.
Contributor(s):
*/
#ifndef __JavaDOMGlobals_h__
#define __JavaDOMGlobals_h__
#include "jni.h"
#include "prclist.h"
#include "nsError.h"
#ifdef ERROR
#undef ERROR
#endif
class nsISupports;
class nsIDOMNode;
struct PRLogModuleInfo;
struct PRLock;
class JavaDOMGlobals {
public:
static jclass attrClass;
static jclass cDataSectionClass;
static jclass commentClass;
static jclass documentClass;
static jclass documentFragmentClass;
static jclass documentTypeClass;
static jclass domImplementationClass;
static jclass elementClass;
static jclass entityClass;
static jclass entityReferenceClass;
static jclass namedNodeMapClass;
static jclass nodeClass;
static jclass nodeListClass;
static jclass notationClass;
static jclass processingInstructionClass;
static jclass textClass;
static jfieldID nodePtrFID;
static jfieldID nodeListPtrFID;
static jfieldID domImplementationPtrFID;
static jfieldID nodeTypeAttributeFID;
static jfieldID nodeTypeCDataSectionFID;
static jfieldID nodeTypeCommentFID;
static jfieldID nodeTypeDocumentFragmentFID;
static jfieldID nodeTypeDocumentFID;
static jfieldID nodeTypeDocumentTypeFID;
static jfieldID nodeTypeElementFID;
static jfieldID nodeTypeEntityFID;
static jfieldID nodeTypeEntityReferenceFID;
static jfieldID nodeTypeNotationFID;
static jfieldID nodeTypeProcessingInstructionFID;
static jfieldID nodeTypeTextFID;
static jclass domExceptionClass;
static jmethodID domExceptionInitMID;
static jclass runtimeExceptionClass;
static jmethodID runtimeExceptionInitMID;
static const char* const DOM_EXCEPTION_MESSAGE[];
typedef enum ExceptionType { EXCEPTION_RUNTIME,
EXCEPTION_DOM } ExceptionType;
static PRLogModuleInfo* log;
static PRCList garbage;
static PRLock* garbageLock;
static PRInt32 javaMaxInt;
static void Initialize(JNIEnv *env);
static void Destroy(JNIEnv *env);
static jobject CreateNodeSubtype(JNIEnv *env,
nsIDOMNode *node);
static void AddToGarbage(nsISupports* domObject);
static void TakeOutGarbage();
static void ThrowException(JNIEnv *env,
const char * message = NULL,
nsresult rv = NS_OK,
ExceptionType exceptionType = EXCEPTION_RUNTIME);
};
#endif /* __JavaDOMGlobals_h__ */

View File

@@ -1,104 +0,0 @@
# a) Install me in public/htdocs/.htaccess, or
# b) Create a <Directory> entry in your Apache conf
# You MUST define YOURPATH/inc as an include_path!
php_value include_path /YOURPATH/v2/public/inc:.:/usr/share/pear:/YOURPATH/v2/shared/lib
# Init script to set up required libraries.
php_value auto_prepend_file init.php
# Finish script that calls $tpl->display for global Smarty object.
php_value auto_append_file finish.php
# Rewrite engine must be used to simplify URLs so they are human readable.
RewriteEngine On
RewriteBase /YOURPATH/public/htdocs
# Rewrites to be compatible with older versions of addons.
RewriteRule ^update/VersionCheck.php(.*)$ update.php$1
RewriteRule ^rss/index.php(.*)$ rss.php$1
# Send search-engine requests to search-engines.php.
RewriteRule ^search-engines[/]{0,1}$ search-engines.php [L]
# Compatibility for v1 extension and theme links.
# Old example URLs:
# /extensions/moreinfo.php?application=thunderbird&id=123
# /extensions/moreinfo.php?id=123
# /themes/moreinfo.php?id=321&application=seamonkey
# /themes/moreinfo.php?id=321
# New:
# /thunderbird/123/
# /firefox/123/
# /seamonkey/321/
# /firefox/321/
RewriteCond %{QUERY_STRING} application=(\w+)&.*id=([0-9]+)
RewriteRule ^(extensions|themes)/moreinfo.php$ %1/%2/? [R=301,L]
RewriteCond %{QUERY_STRING} id=([0-9]+)&.*application=(\w+)
RewriteRule ^(extensions|themes)/moreinfo.php$ %2/%1/? [R=301,L]
RewriteCond %{QUERY_STRING} id=([0-9]+)
RewriteRule ^(extensions|themes)/moreinfo.php$ firefox/%1/? [R=301,L]
# Compatibility for v1 of extensions. The hardcoded URL's in the old
# browsers need this to get to the right pages: (the strings are the GUIDs)
# Old example URL:
# /extensions/?application={3550f703-e582-4d05-9a08-453d09bdfdc6}
# New:
# /extensions.php?app={3550f703-e582-4d05-9a08-453d09bdfdc6}
RewriteCond %{QUERY_STRING} ^application=(.*)$
RewriteRule ^extensions/$ extensions.php?app=%1 [R=301,L]
# Compatibility for v1 of extensions. The hardcoded URL's in the old
# browsers need this to get to the right pages: (the strings are the GUIDs)
# Old example URL:
# /themes/?application={3550f703-e582-4d05-9a08-453d09bdfdc6}
# New:
# /themes.php?app={3550f703-e582-4d05-9a08-453d09bdfdc6}
RewriteCond %{QUERY_STRING} ^application=(.*)$
RewriteRule ^themes/$ themes.php?app=%1 [R=301,L]
# Send rss/* to rss.php.
# Example:
# /rss/firefox/extensions/popular/ -> rss.php?app=firefox&type=extensions&list=popular
RewriteRule ^rss/(\w+)/(\w+)/(\w+)[/]{0,1}$ rss.php?app=$1&type=$2&list=$3
# Rewrite to addon.php if all we have is a numerical id after appname.
# Example:
# /firefox/220/ -> addon.php?app=firefox&id=220
RewriteRule ^(\w+)/(\d+)[/]{0,1}$ addon.php?app=$1&id=$2
# Rewrite to an addon-specific page, passing app and id.
# Example:
# /firefox/220/previews/ -> previews.php?app=firefox&id=220
RewriteRule ^(\w+)/(\d+)/(\w+)[/]{0,1}$ $3.php?app=$1&id=$2
# Rewrite to addon.php if there is a name given plus overview (special case for addon.php).
# Example:
# /firefox/flashgot/overview/ -> addon.php?app=firefox&name=flashgot
RewriteRule ^(\w+)/(\w+)/overview[/]{0,1}$ addon.php?app=$1&name=$2
# Rewrite to addon-specific page, passing app and addon name.
# Example:
# /firefox/flashgot/previews/ -> previews.php?app=firefox&name=flashgot
RewriteRule ^(\w+)/(\w+)/(\w+)[/]{0,1}$ $3.php?app=$1&name=$2
# Special rewrite for dictionaries
# Example:
# /en-US/firefox/1.5/dictionaries/ -> search.php?cat=68&app=firefox&type=E
RewriteRule ^([a-zA-Z]{2}(-[a-zA-Z]{2})?)/(\w+)/([0-9A-Za-z.-]+)/dictionaries[/]{0,1}$ search.php?cat=68&app=$2&type=E [L]
# Rewrite top-level pages.
# Examples:
# /firefox/extensions/ -> extensions.php?app=firefox
# /firefox/themes/ -> themes.php?app=firefox
RewriteRule ^(\w+)/([\w-]+)[/]{0,1}$ $2.php?app=$1
# Rewrite for main page & app.
# Example:
# /firefox/ -> /?app=firefox
RewriteRule ^(\w+)[/]{0,1}$ index.php?app=$1
# Rewrite for client blocklist requests.
# Example:
# /blocklist/1/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/1.5 -> blocklist.php?reqVersion=1&appGuid={ec8030f7-c20a-464f-9b0e-13a3a9e97384}&appVersion=1.5
RewriteRule ^blocklist/(.+)/(.+)/(.+)[/]{0,1}$ blocklist.php?reqVersion=$1&appGuid=$2&appVersion=$3

View File

@@ -1,130 +0,0 @@
<?php
/**
* Add a comment to any Addon.
*
* @package amo
* @subpackage docs
*
* Variables:
* $_GET['aid'] = Addon ID (integer)
*/
startProcessing('addcomment.tpl', null, null,'rustico');
require_once 'includes.php';
session_start();
if ((!array_key_exists('aid', $_GET)) || !is_numeric($_GET['aid'])) {
triggerError('There was an error processing your request.');
}
//This is a secure page, so we'll check the session
if (!$_auth->validSession()) {
//id is already verified to be numeric from above
header('Location: '.WEB_PATH."/login.php?dest=comment&aid={$_GET['aid']}");
exit;
}
// If there are errors, this will be populated
$_errors = array();
// This will be used in queries and the template
$addon = new AddOn($_GET['aid']);
// If the comment is added successfully, this will toggle (used in the template)
$added_comment = false;
// They're posting a comment
if (isset($_POST['c_submit'])) {
if (! (array_key_exists('c_rating', $_POST)
&& array_key_exists('c_title', $_POST)
&& array_key_exists('c_comments', $_POST))) {
//This should never happen, but hey...
triggerError('There was an error processing your request.');
}
// Check all our input to make sure something is there, and it is appropriate.
// If it isn't, make $_bad_input=true which means we'll print the form back out
// with an error message. (By using booleans here, we keep the error messages in
// the .tpl)
$_bad_input = false;
if (!is_numeric($_POST['c_rating']) || $_POST['c_rating'] < 0 || $_POST['c_rating'] > 5) {
$_errors['c_rating'] = true;
$_bad_input = true;
}
if (empty($_POST['c_title'])) {
$_errors['c_title'] = true;
$_bad_input = true;
}
if (empty($_POST['c_comments'])) {
$_errors['c_comments'] = true;
$_bad_input = true;
}
// If bad_input is true, we'll skip the rest of the processing and dump them
// back out to the from with an error.
if ($_bad_input === false) {
// I got a little carried away with the escaping, but it's not gonna hurt anything.
$_c_id = mysql_real_escape_string($addon->ID);
$_c_user_id = mysql_real_escape_string($_auth->getId());
$_c_rating = mysql_real_escape_string($_POST['c_rating']);
$_c_title = mysql_real_escape_string(strip_tags($_POST['c_title']));
$_c_comments = mysql_real_escape_string(strip_tags($_POST['c_comments']));
$_c_commentip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']);
$_sql = "INSERT INTO `feedback`
(
`ID`,
`UserId`,
`CommentVote`,
`CommentTitle`,
`CommentNote`,
`CommentDate`,
`commentip`
) VALUES (
{$_c_id},
{$_c_user_id},
{$_c_rating},
'{$_c_title}',
'{$_c_comments}',
NOW(),
'{$_c_commentip}'
)";
$db->query($_sql);
if (!DB::isError($db->record)) {
// Calculate the lookup value in main for comment avg if our INSERT was successful.
$_ratingSql = "UPDATE `main` SET `Rating` = ROUND((SELECT AVG(`CommentVote`) FROM `feedback` WHERE `ID` = {$_c_id}),2) WHERE `ID` = {$_c_id}";
$db->query($_ratingSql);
}
// For the template
$added_comment = true;
}
}
// Put values back into the form - if something went wrong this will populate the
// form again
$c_rating_value = array_key_exists('c_rating', $_POST) ? $_POST['c_rating'] : '';
$c_title_value = array_key_exists('c_title', $_POST) ? $_POST['c_title'] : '';
$c_comments_value = array_key_exists('c_comments', $_POST) ? $_POST['c_comments'] : '';
// Assign template variables.
$tpl->assign(
array( 'title' => 'Add Comment',
'currentTab' => null,
'rate_select_value' => array('','5','4','3','2','1','0'),
'rate_select_name' => array('Rating:','5 stars', '4 stars', '3 stars', '2 stars', '1 star', '0 stars'),
'addon' => $addon,
'c_added_comment' => $added_comment,
'c_errors' => $_errors,
'c_rating_value' => $c_rating_value,
'c_title_value' => $c_title_value,
'c_comments_value' => $c_comments_value,
'sidebar' => 'inc/addon-sidebar.tpl'
)
);
?>

View File

@@ -1,37 +0,0 @@
<?php
/**
* Addon summary page. Displays a top-down view of all Addon properties.
*
* @package amo
* @subpackage docs
*/
// Get the int value of our addon ID.
$clean['ID'] = intval($_GET['id']);
$sql['ID'] =& $clean['ID'];
startProcessing('addon.tpl',$clean['ID'],$compileId,"rustico");
require_once('includes.php');
// Create our AddOn object using the ID.
$addon = new AddOn($sql['ID']);
/* This is kind of a cheesy hack to determine how to display
download links on the addon page. If only one link is shown,
there will just be an "Install Now" link, otherwise there will
be links for each version. */
if (sizeof($addon->OsVersions) == 1) {
$multiDownloadLinks = false;
} else {
$multiDownloadLinks = true;
}
// Assign template variables.
$tpl->assign(
array( 'addon' => $addon,
'multiDownloadLinks' => $multiDownloadLinks,
'title' => $addon->Name,
'content' => 'addon.tpl',
'sidebar' => 'inc/addon-sidebar.tpl')
);
?>

View File

@@ -1,24 +0,0 @@
<?php
/**
* Author information.
* @package amo
* @subpackage docs
*/
// Get our addon ID.
$clean['UserID'] = intval($_GET['id']);
$sql['UserID'] =& $clean['UserID'];
startProcessing('author.tpl',$clean['UserID'],$compileId,'rustico');
require_once('includes.php');
$user = new User($sql['UserID']);
// Assign template variables.
$tpl->assign(
array( 'user' => $user,
'title' => $user->UserName,
'content' => 'author.tpl',
'sidebar' => 'inc/author-sidebar.tpl')
);
?>

View File

@@ -1,190 +0,0 @@
<?php
/**
* This script tells clients whether or not a given add-on is blocklisted.
*
* It should always be well-formed and won't be seen by users,
* at least initially.
*
* At some point we should consider generating an XSLT in case we want to
* publish this list.
*
* @todo stylesheet for client viewing of blocklists
* @package amo
* @subpackage pub
*/
startProcessing('blocklist.tpl', $memcacheId, $compileId, 'xml');
/**
* VARIABLES
*
* Initialize, set up and clean variables.
*/
// Required variables that we need to run the script.
$required_vars = array('reqVersion', // Used as a marker for the current URI scheme, in case it changes later.
'appGuid', // GUID of the client requesting the blocklist.
'appVersion'); // Version of the client requesting the blocklist (not used).
// Debug flag.
$debug = (isset($_GET['debug']) && $_GET['debug'] == 'true') ? true : false;
// Array to hold errors for debugging.
$errors = array();
// Iterate through required variables, and escape/assign them as necessary.
foreach ($required_vars as $var) {
if (empty($_GET[$var])) {
$errors[] = 'Required variable '.$var.' not set.'; // set debug error
}
}
// If we have all of our data, clean it up for our queries.
if (empty($errors)) {
// We will need our DB in order to perform our query.
require_once('includes.php');
// Iterate through required variables, and escape/assign them as necessary.
foreach ($required_vars as $var) {
$sql[$var] = mysql_real_escape_string($_GET[$var]);
}
/*
* QUERIES
*
* All of our variables are cleaned.
* Now attempt to retrieve blocklist information for this application.
*/
$query = "
SELECT
blitems.id as itemId,
blitems.guid as itemGuid,
blitems.min as itemMin,
blitems.max as itemMax,
blapps.id as appId,
blapps.item_id as appItemId,
blapps.guid as appGuid,
blapps.min as appMin,
blapps.max as appMax
FROM
blitems
LEFT JOIN blapps on blitems.id = blapps.item_id
WHERE
blapps.guid = '{$sql['appGuid']}'
OR blapps.guid IS NULL
ORDER BY
itemGuid, appGuid, itemMin, appMin
";
$db->query($query, SQL_ALL, SQL_ASSOC);
if (DB::isError($db->record)) {
$errors[] = 'MySQL query for blocklist failed.';
} elseif (empty($db->record)) {
$errors[] = 'No matching blocklist for given application GUID.';
} else {
$blocklist = array();
foreach ($db->record as $row) {
// If we have item itemMin/itemMax values or an appId possible ranges, we create
// hashes for each itemId and its related range.
//
// Since itemGuids can have different itemIds, they are the first hash. Each
// itemId is effectively an item's versionRange. For each one of these we create
// a corresponding array containing the range values, which could be NULL.
if (!empty($row['itemMin']) && !empty($row['itemMax']) || !empty($row['appItemId'])) {
$blocklist['items'][$row['itemGuid']][$row['itemId']] = array(
'itemMin' => $row['itemMin'],
'itemMax' => $row['itemMax']
);
// Otherwise, our items array only contains a top-level containing the itemGuid.
//
// Doing so tells our template to terminate the item with /> because there is
// nothing left to display.
} else {
$blocklist['items'][$row['itemGuid']] = null;
}
// If we retrieved non-null blapp data, store it in the apps array.
//
// These are referenced later by their foreign key relationship to items (appItemId).
if ($row['appItemId']) {
$blocklist['apps'][$row['itemGuid']][$row['appItemId']][$row['appGuid']][] = array(
'appMin' => $row['appMin'],
'appMax' => $row['appMax']
);
}
}
// Send our array to the template.
$tpl->assign('blocklist',$blocklist);
}
}
/*
* DEBUG
*
* If we get here, something went wrong. For testing purposes, we can
* optionally display errers based on $_GET['debug'].
*
* By default, no errors are ever displayed because humans do not read this
* script.
*
* Until there is some sort of API for how clients handle errors,
* things should remain this way.
*/
if ($debug == true) {
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">';
echo '<html lang="en">';
echo '<head>';
echo '<title>blocklist.php Debug Information</title>';
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
echo '</head>';
echo '<body>';
echo '<h1>Parameters</h1>';
echo '<pre>';
print_r($_GET);
echo '</pre>';
if (!empty($query)) {
echo '<h1>Query</h1>';
echo '<pre>';
echo $query;
echo '</pre>';
}
if (!empty($blocklist)) {
echo '<h1>Result</h1>';
echo '<pre>';
print_r($blocklist);
echo '</pre>';
}
if (!empty($errors) && is_array($errors)) {
echo '<h1>Errors Found</h1>';
echo '<pre>';
print_r($errors);
echo '</pre>';
} else {
echo '<h1>No Errors Found</h1>';
}
echo '</body>';
echo '</html>';
exit;
}
?>

View File

@@ -1,31 +0,0 @@
<?php
/**
* Home page for extensions, switchable on application.
*
* @package amo
* @subpackage docs
* @todo make this dynamic based on an SQL field (recommended)
*/
startProcessing('bookmarks.tpl', 'bookmarks', $compileId, 'rustico');
require_once('includes.php');
setApp();
$amo = new AMO_Object();
$primary = $amo->getAddons(array(3615));
if (is_array($primary) && !empty($primary)) {
$primary = $primary[0];
}
$other = $amo->getAddons(array(2410, 1833));
// Assign template variables.
$tpl->assign(
array( 'primary' => $primary,
'other' => $other,
'content' => 'bookmarks.tpl',
'currentTab' => 'bookmarks')
);
?>

View File

@@ -1,65 +0,0 @@
<?php
/**
* Comments listing for an addon.
*
* @package amo
* @subpackage docs
* @TODO Disallow comments for addon authors (authors should not be allowed to comment on their own addon).
* @TODO Throttle comment entry.
*/
// Get our addon id.
$clean['id'] = intval($_GET['id']);
$sql['id'] =& $clean['id'];
// Sort.
if (isset($_GET['sort'])&&ctype_alpha($_GET['sort'])) {
$clean['sort'] = $_GET['sort'];
}
// Starting point.
$page['left'] = (isset($_GET['left'])) ? intval($_GET['left']) : 0;
// Ending point.
$page['right'] = $page['left'] + 10;
// Order by.
$page['orderby'] = (!empty($_GET['orderby'])&&ctype_alpha($_GET['orderby'])) ? $_GET['orderby'] : "";
startProcessing('comments.tpl',$clean['id'],$compileId,'rustico');
require_once('includes.php');
$addon = new AddOn($sql['id']);
$addon->getComments($page['left'],10,$page['orderby']);
// Get our result count.
$db->query("SELECT FOUND_ROWS()", SQL_INIT);
$resultCount = !empty($db->record) ? $db->record[0] : $page['right'];
if ($resultCount<$page['right']) {
$page['right'] = $resultCount;
}
// Do we even have a next or previous page?
$page['previous'] = ($page['left'] >= 10) ? $page['left']-10 : null;
$page['next'] = ($page['left']+10 < $resultCount) ? $page['left']+10 : null;
$page['resultCount'] = $resultCount;
$page['leftDisplay'] = $page['left']+1;
// Build the URL based on passed arguments.
foreach ($clean as $key=>$val) {
if (!empty($val)) {
$buf[] = $key.'='.$val;
}
}
$page['url'] = implode('&amp;',$buf);
unset($buf);
// Assign template variables.
$tpl->assign(
array( 'addon' => $addon,
'title' => $addon->Name.' Comments',
'content' => 'comments.tpl',
'sidebar' => 'inc/addon-sidebar.tpl',
'page' => $page)
);
?>

View File

@@ -1,132 +0,0 @@
<?php
/**
* Create a new account
*
* @package amo
* @subpackage docs
*
*/
startProcessing('createaccount.tpl', null, null, 'rustico');
require_once 'includes.php';
// If there are problems, these will be set to true and used in the template. By
// using null/booleans, error messages are kept in the template.
$error_email_empty = null;
$error_email_malformed = null;
$error_emailconfirm_empty = null;
$error_emailconfirm_nomatch = null;
$error_email_duplicate = null;
$error_name_empty = null;
$error_password_empty = null;
$error_passwordconfirm_empty = null;
$error_passwordconfirm_nomatch = null;
$_bad_input = false; // think positive :)
$account_created = false;
if (array_key_exists('submit', $_POST) && isset($_POST['submit'])) {
/* Verify Input */
// Check email - a little long and confusing. Basically, throw an error if
// the following is not met (in order):
// $email is set, $emailconfirm is set, $email=$emailconfirm, and $email is a valid address
if (!array_key_exists('email', $_POST) || empty($_POST['email'])) {
$error_email_empty = true;
$_bad_input = true;
} else {
if (!array_key_exists('emailconfirm', $_POST) || empty($_POST['emailconfirm'])) {
$error_emailconfirm_empty = true;
$_bad_input = true;
} else {
// technically this would catch if emailconfirm was empty to, but
// waiting until here could make php throw a warning.
if ($_POST['email'] != $_POST['emailconfirm']) {
$error_emailconfirm_nomatch = true;
$_bad_input = true;
}
}
// Regex from Gavin Sharp -- thanks Gavin.
if (!preg_match('/^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$/',$_POST['email'])) {
$error_email_malformed = true;
$_bad_input = true;
}
}
// name is required
if (!array_key_exists('name', $_POST) || empty($_POST['name'])) {
$error_name_empty = true;
$_bad_input = true;
}
// password is required and match
if (!array_key_exists('password', $_POST) || empty($_POST['password'])) {
$error_password_empty = true;
$_bad_input = true;
} else {
if (!array_key_exists('passwordconfirm', $_POST) || empty($_POST['passwordconfirm'])) {
$error_passwordconfirm_empty = true;
$_bad_input = true;
} else {
if ($_POST['password'] != $_POST['passwordconfirm']) {
$error_passwordconfirm_nomatch = true;
$_bad_input = true;
}
}
}
// This is a little out of order because we're trying to save a query. If we
// haven't had any bad input yet, do one last check to make sure the email
// address isn't already in use.
if ($_bad_input === false) {
$_user_test = user::getUserByEmail($_POST['email']);
if (is_object($_user_test)) {
$_bad_input = true;
$error_email_duplicate = true;
}
}
// We're happy with the input, make a new account
if ($_bad_input === false) {
$_user_info = array();
$_user_info['email'] = $_POST['email'];
$_user_info['name'] = $_POST['name'];
$_user_info['website'] = $_POST['website'];
$_user_info['password'] = $_POST['password'];
$user_id = user::addUser($_user_info);
if ($user_id === false) {
triggerError('There was an error processing your request.');
}
$user = new User($user_id[0]);
// we're emailing them their plain text password
$user->sendConfirmation($_user_info['password']);
$account_created = true;
}
}
// Pull values from POST to put back in the form
$email_value = array_key_exists('email', $_POST) ? $_POST['email'] : '';
$emailconfirm_value = array_key_exists('emailconfirm', $_POST) ? $_POST['emailconfirm'] : '';
$name_value = array_key_exists('name', $_POST) ? $_POST['name'] : '';
$website_value = array_key_exists('website', $_POST) ? $_POST['website'] : '';
// Assign template variables.
$tpl->assign(
array( 'title' => 'Create an Account',
'currentTab' => null,
'account_created' => $account_created,
'bad_input' => $_bad_input,
'error_email_empty' => $error_email_empty,
'error_email_malformed' => $error_email_malformed,
'error_emailconfirm_empty' => $error_emailconfirm_empty,
'error_emailconfirm_nomatch' => $error_emailconfirm_nomatch,
'error_email_duplicate' => $error_email_duplicate,
'error_name_empty' => $error_name_empty,
'error_password_empty' => $error_password_empty,
'error_passwordconfirm_empty' => $error_passwordconfirm_empty,
'error_passwordconfirm_nomatch' => $error_passwordconfirm_nomatch,
'email_value' => $email_value,
'emailconfirm_value' => $emailconfirm_value,
'name_value' => $name_value,
'website_value' => $website_value
)
);
?>

View File

@@ -1,115 +0,0 @@
body, td, th, h3, input { /* redundant rules for bad browsers */
font-family: verdana, sans-serif;
font-size: x-small;
voice-family: "\"}\"";
voice-family: inherit;
font-size: small;
}
body {
color: #333;
line-height: 140%;
}
a:link { color: #039; }
a:visited { color: #609; }
a:hover { color: #333; }
a:active { color: #000; }
#header a:visited { color: #039; }
#header a:hover { color: #333; }
#mBody li { padding-bottom: 0.5em; }
.sidebar_content > h1,.sidebar_content > h2,.sidebar_content > h3,.sidebar_content > h4,.sidebar_content > h5,.sidebar_content > h6,.sidebar > h1,.sidebar_general > h2,.sidebar_general > h3,.sidebar_general > h4,.sidebar_general > h5,.sidebar_general > h6 {
margin-top: 0;
}
.sidebar_right {
margin-left: 65%;
}
.sidebar_general ul {
margin-left: 0;
padding-left: 20px;
}
.sidebar_general li {
padding: 0.2em 0;
}
img.imgright {
float: right;
margin: .3em .3em .3em 0;
padding: .3em .3em .3em 0;
}
img {
border: 0;
}
dt {
font-weight: bold;
}
dd {
margin: 0 0 1em 1em;
}
.skipLink {
position: absolute;
left: -1200px;
width: 990px;
}
.hide {
display: none;
}
ul.compact {
margin-left: 0;
padding-left: 20px;
}
img.rss {
float: right;
margin: 0;
padding: 4px 4px 0 0;
}
.first { margin-top: 0.2em; }
.requires img {
vertical-align: middle;
}
/* Headers */
#mainContent > h1:first-child,
#mainContent > h2:first-child,
#mainContent > h3:first-child,
#mainContent > h4:first-child,
#mainContent > h5:first-child,
#mainContent > h6:first-child,
#side > h1:first-child,
#side > h2:first-child,
#side > h3:first-child,
#side > h4:first-child,
#side > h5:first-child,
#side > h6:first-child {
margin-top: 0;
}
.appversions {
border: 1px solid #ccc;
margin: .5em 0;
}
.appversions th {
background-color: #ccc;
padding: .2em;
}
.appversions .row1 {
background-color: #eee;
}

View File

@@ -1,139 +0,0 @@
body {
min-width: 700px;
margin: 0 0 2em 0;
padding: 0;
}
#container {
width: 740px;
margin: 0 auto;
}
#mBody {
clear: both;
padding: .2em 0;
}
.sidebar_content {
width: 60%;
float: left;
}
#footer {
clear: both;
}
#side {
float: left;
width: 23%;
margin-bottom: 1em;
}
#mainContent {
margin-left: 25%;
}
.nomenu #mainContent {
margin-left: 0;
}
.bodyleft {
margin-left: 25% ! important
}
#mainContent.right {
float: left;
width: 62%;
margin-bottom: 1em;
margin-left: 0;
}
#side.right {
float: none;
width: auto;
margin-left: 65%;
}
p.security-update {
padding-left: 35px;
background: url(../../images/security-update.png) no-repeat;
margin-top: 0;
min-height: 30px;
}
/* Sidebar */
#nav:before {
line-height: 0.1;
font-size: 1px;
background: transparent url("../../images/menu_tr.gif") no-repeat top right;
margin: 0;
height: 9px;
display: block;
border-bottom: 1px solid #ddd;
content: url("../../images/key-point_tl.gif");
}
#nav {
background: #E0E9E9 url("../../images/menu_back.gif") right repeat-y;
}
#nav:after {
display: block;
padding-top: 0;
line-height: 0.1;
font-size: 1px;
content: url("../../images/key-point_bl.gif");
margin: 0 0 0 0;
height: 8px;
background: transparent url("../../images/menu_br.gif") scroll no-repeat bottom right ;
border-top: 1px solid #fff;
}
#nav, #nav ul {
margin: 0;
padding: 0;
list-style: none;
}
#nav {
margin-bottom: 1em;
}
#nav li {
display: inline;
padding: 0;
margin: 0;
}
#nav li span { /* used for un-linked menu items */
display: block;
padding: 6px 10px;
font-weight: bold;
color: #666;
}
#nav li span#configParent, #nav li span #configuration {
display: inline;
font-weight: normal;
padding: 0;
}
#nav li a {
display: block;
padding: 6px 10px;
text-decoration: none;
background: #EDF2F2;
border-bottom: 1px solid #ddd;
border-top: 1px solid #fff;
border-right: 1px solid #ddd;
}
#nav li a:hover {
background: #E0E9E9;
}
#nav ul li span,#nav ul li a {
padding: 4px 8px 4px 20px;
}
.clear-both {
clear: both;
}
.center {
text-align: center;
}

View File

@@ -1,454 +0,0 @@
#mBody h2 {
font: 140% arial,helvetica,verdana,sans-serif;
border-bottom: 1px solid #ccc;
margin-bottom: 0;
}
#mBody h2 a {
margin: 0;
padding: 0;
text-decoration: none;
}
#mBody h3 {
font: 120% arial,helvetica,verdana,sans-serif;
border-bottom: 1px solid #ccc;
margin-bottom: 0;
}
#mBody h1 {
font: 180% arial,helvetica,sans-serif;
border-bottom: 1px solid #ccc;
margin-bottom: 0;
}
.key-point:before {
line-height: 0.1;
font-size: 1px;
background: transparent url("../../images/key-point_tr.gif") no-repeat top right;
margin: -15px -15px 0 -15px;
height: 15px;
display: block;
border: none;
content: url("../../images/key-point_tl.gif");
}
.key-point {
background: #EFF8CE url("../../images/key-point_back.gif") right repeat-y;
padding: 15px;
margin-top: 18px;
}
.key-point:after {
display: block;
padding-top: 15px;
line-height: 0.1;
font-size: 1px;
content: url("../../images/key-point_bl.gif");
margin: -15px;
height: 8px;
background: transparent url("../../images/key-point_br.gif") scroll no-repeat bottom right ;
}
#header form #submit {
font-size: 100%;
padding: 1px;
font-family: tahoma, arial, sans-serif;
}
#header form #q {
width: 10em;
font-size: 100%;
font-weight: normal;
border: 1px solid #9097A2;
padding: 2px;
font-family: tahoma, arial, sans-serif;
}
#sectionsearch {
font-size: 100%;
font-weight: normal;
font-family: tahoma, arial, sans-serif;
}
.popularlist {
font-size: 85%;
}
.popularlist span {
color: #666;
white-space: nowrap;
}
.install a {
text-decoration: none;
}
.install a strong {
text-decoration: underline;
}
.install-box {
width: 20em;
}
.key-point {
background-color:#bee6a1;
}
.install div {
background: url(../../images/install.png) no-repeat;
padding: 3px 0 8px 30px;
}
#opinions h4 {
margin: 0;
}
.opinions-info {
font-size: 85%;
margin: 0 0 0.5em 0;
}
.opinions-info a {
text-decoration: none;
color: #666;
}
.opinions-info a:hover {
text-decoration: underline;
}
.opinions-text {
margin: 0;
}
.opinions-rating img {
vertical-align: middle;
}
.rating {
float: right;
font-size: 85%;
font-weight: bold;
}
.rating img {
vertical-align: middle;
}
.more-links {
margin: 0.5em 0 0 0;
padding: 0;
}
.more-links li {
display: inline;
margin: 0;
padding: 5px;
}
.screenshot {
float: right;
background: #fff;
padding: 0 0 2em 2em;
}
.screenshot a {
text-align: center;
display: block;
}
/* Remaining Original Update Styles */
.item {
border: #D2D6D6 1px solid;
padding-left: 5px;
padding-right: 6px;
MARGIN-bottom: 10px;
-moz-border-radius: 10px;
}
.item a {
color: #00129c;
text-decoration: none;
}
.item a:visited {
color: #00129c;
text-decoration: none;
}
.item a:hover {
color: #fc5900;
}
.item h2 {
margin-top: 0.2em;
}
.recommended {
clear: both;
padding: 1em 0;
}
.recommended h2 {
padding: 1em 0 0 215px;
margin: 0;
}
.recommended p {
padding-left: 215px;
}
.recommended-download h3 {
font: small tahoma, verdana, sans-serif;
margin: 0;
background: url("../../images/download.gif") 0 100%;
font-size: small;
padding-bottom: 5px;
}
.recommended-download h3 a {
display: block;
background: url("../../images/download.gif") 0 0;
font-size: 65%;
font-weight: bold;
width: 165px;
padding: 12px 25px 5px 10px;
text-decoration: none;
color: #5A9A3B;
}
.recommended-download h3 a:hover {
text-decoration: underline;
color: #275113;
}
.recommended-download {
display: block;
width: 200px;
padding: 15px 0 0 215px;
}
.recommended-img {
border: 2px outset #eee;
float: left;
margin: 1em 1em 0 0;
}
.iconbar {
padding-right: 15px;
float: left;
width: auto;
height: 34px;
}
.iconbar img {
float:left;
}
.iconbar a {
text-decoration: none;
}
.selected a, .selected a:visited {
color: #fc5900;
}
.baseline {
clear: right;
margin-top: 5px;
border-top: #ccc 1px solid;
padding: 3px;
padding-left: 10px;
font-size: 8pt;
color: #333;
}
#opinions {
list-style-type: none;
margin: 0;
padding: 0;
}
#opinions li {
border-top: 1px solid #eee;
padding: 1em 0;
}
#opinions h4 {
clear: right;
margin: 0;
padding: .5em 0 0 0;
}
.opinions-info {
color: #666;
margin: 0;
padding: 0 0 .5em 0;
}
.opinions-info a {
text-decoration: none;
color: #666;
}
.opinions-info a:hover {
text-decoration: underline;
}
.opinions-text {
margin: .8em 0 0 0;
padding: 0;
}
.opinions-vote {
background-color: #cfc;
border: 1px solid #000;
float: left;
font-style: italic;
font-weight: bold;
font-size: x-large;
padding: 5px;
margin: 4px;
text-align: center;
}
.opinions-caption {
display: block;
font-size: x-small;
font-weight: normal;
margin: 0;
padding: 0;
}
.opinions-rating {
margin: 0;
padding: .5em 0;
}
.opinions-helpful {
font-style: italic;
border: 1px dashed #eee;
padding: .2em;
margin: .7em 0;
}
.tooltip {
cursor: help;
border-bottom: 1px dotted;
}
.pages {
color: #999;
font-weight: bold;
height: 2em;
}
.next {
border-left: 1px solid #000;
display: inline;
padding-left: 5px;
}
.prev {
display: inline;
}
.pages a {
color: blue;
text-decoration: none;
}
#comment-rate {
margin: .5em;
padding: .5em;
background-color: #eee;
border: 1px solid #999;
}
#search-block:before {
line-height: 0.1;
font-size: 1px;
background: transparent url("../../img/key-point_tr.gif") no-repeat top right;
margin: -10px -10px 0 -10px;
height: 10px;
display: block;
border: none;
content: url("../../img/key-point_tl.gif");
}
#search-block{
background: #EFF8CE url("../../img/key-point_back.gif") right repeat-y;
padding: 10px;
}
#search-block label{
font-weight: bold;
}
#search-block select {
width: 13em;
}
#search-block input[type=text] {
width: 9.2em;
}
.right #search-block select {
width: 20em;
}
.right #search-block input[type=text] {
width: 16.2em;
}
#search-block:after {
display: block;
padding-top: 10px;
line-height: 0.1;
font-size: 1px;
content: url("../../img/key-point_bl.gif");
margin: -10px;
height: 8px;
background: transparent url("../../img/key-point_br.gif") scroll no-repeat bottom right ;
}
#search-options {
display: none;
}
#hide-search-options {
display: none;
}
#show-search-options {
display: inline;
}
#comments-sort {
float: right;
}
.disclaimer {
text-align: center;
color: #ccc;
font-size: x-small;
width: 600px;
margin-left: auto;
margin-right: auto;
}
.install-thunderbird {
background-color: #eee;
border: 1px solid #ccc;
margin: .5em 0;
padding: .5em;
}
.install-thunderbird p {
font-weight: bold;
color: blue;
margin: 0;
padding: 0;
}

View File

@@ -1,317 +0,0 @@
body {
background: #fff url("../../images/body_back.gif") repeat-x;
}
#footer {
background: url("../../images/footer.gif") 0 8px no-repeat;
margin: 10px 0;
text-align: center;
}
#footer span,#footer a {
white-space: nowrap;
padding: 0 1em;
color: #666;
font-size: 85%;
}
#footer p a:hover {
color: #000;
}
#footer .switch-fx,
#footer .switch-tb,
#footer .switch-suite {
padding-left: 30px;
font-size: 100%;
background: #fff 9px 0 no-repeat;
}
#footer .switch-tb {
background-image: url("../../images/switch-tb.gif");
}
#footer .switch-suite {
background-image: url("../../images/switch-suite.gif");
}
#footer .switch-fx {
background-image: url("../../images/switch-fx.gif");
}
/* Site Header */
#header {
clear: both;
padding-top: 40px;
position: relative;
} * html #header { padding-top: 20px; }
#header h1 {
height: 46px;
margin: 0;
font-size: 2px;
position: absolute;
top: 0;
left: -4px;
border: none;
z-index: 5000;
}
#header form {
position: absolute;
right: 0;
top: 9px;
margin-left: 200px;
font-family: tahoma, arial, sans-serif;
font-size: 85%;
}
#header div#auth {
display:inline;
position:absolute;
top:11px;
right:0px;
margin-right: 200px;
}
#key-menu {
background: #B2C1C8 url("../../images/header-bottom.gif") 0 100% no-repeat;
padding: 0 0 10px 0;
overflow: auto;
margin-bottom: 1em;
}
* html #key-menu {
overflow: visible;
height: 1px;
}
#key-menu ul, #key-menu li {
margin: 0;
padding: 0;
list-style: none;
}
#key-menu ul {
padding: 14px 12px 0 12px;
background: url("../../images/header-top.gif") 0 0 no-repeat;
}
#key-menu li {
float: left;
background: url("../../images/tabs.gif") 100% -50px;
padding-right: 5px;
margin-right: 2px;
border-bottom: 1px solid #849CA4;
margin-bottom: -10px;
}
#key-menu li a, #key-menu li span {
display: block;
float: left;
padding: 3px 15px 2px 20px;
background: url("../../images/tabs.gif") 0 -50px;
color: #5A7CBA;
text-decoration: none;
}
#key-menu li:hover a {
background-position: 0 -100px;
}
#key-menu li:hover {
background-position: 100% -100px;
}
#key-menu li.current {
background: url("../../images/tabs.gif") 100% 0;
border-bottom-color: white;
}
#key-menu li.current a, #key-menu li.current span {
background: url("../../images/tabs.gif") 0 0;
color: #999;
}
#mozilla-com a {
float: right;
display: block;
text-indent: -5000em;
width: 110px;
height: 25px;
text-decoration: none;
background: url("../../images/mozilla-org.gif") no-repeat;
}
/* End Site Header */
/* Front Feature */
.split-feature {
background: url("../../images/feature-back.png") 0 100% no-repeat;
overflow: auto;
padding-bottom: 10px;
margin-right: -2px;
} * html .split-feature { overflow: visible; height: 1px; }
.split-feature-one, .split-feature-two {
padding: 15px 15px 0 15px;
float: left;
}
.split-feature-one {
width: 485px;
background: url("../../images/feature-back.png") 0 0 no-repeat;
}
.split-feature-two {
width: 185px;
padding-left: 25px;
background: url("../../images/feature-back.png") 100% 0 no-repeat;
}
.split-feature h2 {
margin: 0 0 0.2em 0;
font-family: verdana, arial, sans-serif;
font-size: 1.4em;
}
.split-feature h2 a {
text-decoration: none;
font-size: medium;
font-style: italic;
}
.split-feature-one p {
margin-left: 220px;
}
.feature-download h3 {
font: 85% tahoma, verdana, sans-serif;
margin: 5px 0 0 0;
background: url("../../images/download.gif") 0 100%;
padding-bottom: 5px;
}
.feature-download h3 a {
display: block;
background: url("../../images/download.gif") 0 0;
font-weight: bold;
width: 165px;
padding: 12px 25px 5px 10px;
text-decoration: none;
color: #5A9A3B;
}
.feature-download h3 a:hover {
text-decoration: underline;
color: #275113;
}
.feature-download {
float: left;
width: 200px;
padding-right: 20px;
}
ol.top-10, ol.top-10 li {
margin: 0;
padding: 0;
list-style: none;
}
ol.top-10 li a {
display: block;
text-align: right;
padding: 1px 0 1px 20px;
border-top: 1px solid #eee;
text-decoration: none;
width: 160px;
background: url("../../images/top-10.gif") 0 0 no-repeat;
cursor: pointer; /* for IE as it ignores floating <strong>s */
font-size: 85%;
}
ol.top-10 li a:hover strong {
text-decoration: underline;
}
ol.top-10 li.top-10-2 a { background-position: 0 -50px; }
ol.top-10 li.top-10-3 a { background-position: 0 -100px; }
ol.top-10 li.top-10-4 a { background-position: 0 -150px; }
ol.top-10 li.top-10-5 a { background-position: 0 -200px; }
ol.top-10 li.top-10-6 a { background-position: 0 -250px; }
ol.top-10 li.top-10-7 a { background-position: 0 -300px; }
ol.top-10 li.top-10-8 a { background-position: 0 -350px; }
ol.top-10 li.top-10-9 a { background-position: 0 -400px; }
ol.top-10 li.top-10-10 a { background-position: 0 -450px; }
ol.top-10 li strong {
float: left;
}
#front-search {
text-align: center;
margin: 1.5em 0 1em 0;
}
.front-section-left, .front-section-right {
width: 220px;
float: left;
color: #666;
}
.front-section-left {
padding: 5px 0 5px 190px;
}
.front-section-right {
padding: 5px 70px 5px 0;
}
.front-section-left h2, .front-section-right h2{
margin: 0;
}
.front-section-left ul, .front-section-right ul {
margin: 0;
padding: 0;
margin-bottom: 2em;
}
.front-section-left li, .front-section-right li {
padding: 0.2em 0;
margin-left: 20px;
}
.front-section {
width: 220px;
padding: 5px 0 5px 25px;
float: left;
color: #666;
}
.front-section h2 {
margin: 0;
}
.front-section ul {
margin: 0;
padding: 0;
margin-bottom: 2em;
}
.front-section li {
padding: 0.2em 0;
margin-left: 20px;
}
a.top-feature {
float: left;
background: #fff;
}
a.top-feature img {
margin: 0;
padding: 0;
}

View File

@@ -1,46 +0,0 @@
.amo-form div {
margin: 1em 0;
}
.amo-submit {
background-color: #eee;
border: 2px #999 outset;
}
.amo-submit:hover {
background-color: #fff;
cursor: pointer;
}
.amo-cancel {
}
.amo-label-large, .amo-label-medium, .amo-label-small {
border-bottom: 1px dashed #eee;
float: left;
font-weight: bold;
}
.amo-label-large {
width: 14em;
}
.amo-label-medium {
width: 10em;
}
.amo-label-small {
width: 8em;
}
.amo-label-xsmall {
width: 6em;
}
.amo-form-error {
background-color: #eee;
border: 1px dashed #c66;
color: #c00;
margin: 5px 0;
padding: .5em;
}

View File

@@ -1,114 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/rss">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><xsl:value-of select="channel/title"/></title>
<meta name="keywords" content="mozilla update, mozilla extensions, mozilla plugins, thunderbird themes, thunderbird extensions, firefox extensions, firefox themes" />
<link rel="stylesheet" type="text/css" href="/css/print.css" media="print" />
<link rel="stylesheet" type="text/css" href="/css/base/content.css" media="all" />
<link rel="stylesheet" type="text/css" href="/css/cavendish/content.css" title="Cavendish" media="all" />
<link rel="stylesheet" type="text/css" href="/css/base/template.css" media="screen" />
<link rel="stylesheet" type="text/css" href="/css/cavendish/template.css" title="Cavendish" media="screen" />
<link rel="stylesheet" type="text/css" href="/css/forms.css" media="screen" />
<link rel="home" title="Home" href="https://addons.mozilla.org/" />
<link rel="alternate" type="application/rss+xml" href="{self}" title="{title}" />
<link rel="shortcut icon" href="{channel/image/url}" />
</head>
<body>
<div id="container">
<p class="skipLink"><a href="#firefox-feature" accesskey="2">Skip to main content</a></p>
<div id="mozilla-com"><a href="http://www.mozilla.com/">Visit Mozilla.com</a></div>
<div id="header">
<div id="key-title">
<h1>
<a href="/firefox/" title="Return to home page" accesskey="1">
<img src="/images/title-firefox.gif" width="276" height="54" alt="Firefox Add-ons Beta" />
</a>
</h1>
<script type="text/javascript">
//<![CDATA[
addUsernameToHeader();
//]]>
</script>
<form id="search" method="get" action="/search.php" title="Search Mozilla Update">
<div>
<label for="q" title="Search Mozilla Update">search:</label>
<input type="text" id="q" name="q" accesskey="s" size="10" />
<input type="hidden" name="app" value="firefox" />
<input type="submit" id="submit" value="Go" />
</div>
</form>
</div>
<div id="key-menu">
<ul id="menu-firefox">
<li><a href="/firefox/">Home</a></li>
<li><a href="/firefox/extensions/">Extensions</a></li>
<li><a href="/firefox/plugins/">Plugins</a></li>
<li><a href="/firefox/search-engines/">Search Engines</a></li>
<li><a href="/firefox/themes/">Themes</a></li>
</ul>
</div>
<!-- end key-menu -->
</div>
<!-- end header -->
<hr class="hide" />
<div id="mBody">
<h1><xsl:value-of select="channel/title"/></h1>
<p>
This is an RSS feed designed to be read by an RSS reader. Which you aren't.
</p>
<p>
<strong>What's an RSS Feed?</strong><br />
<acronym title="Really Simple Syndication">RSS</acronym> feeds
allow you to take the latest content from our site and view it in other places
such as a feed reader, your browser or your website. Feeds make it easy and
convenient to stay on top of the latest from Mozilla Add-ons.
</p>
<p>
<strong>How do I use this feed?</strong><br/>
To add this feed as a live bookmark in Firefox, simply click on the orange icon
(<img src="/images/rss.png" alt="RSS" />) in the address bar. Otherwise, take the
URL of this feed and add it to your favorite RSS reader.
</p>
<p>Preview of this feed:</p>
<ul>
<xsl:for-each select="channel/item">
<li>
<strong><a href="{link}"><xsl:value-of select="title"/></a></strong>
</li>
</xsl:for-each>
</ul>
</div>
<hr class="hide" />
<div id="footer">
<p><a href="/firefox/" class="switch-fx">Firefox Add-ons </a><a href="/thunderbird/" class="switch-tb">Thunderbird Add-ons </a><a href="/mozilla/" class="switch-suite">Mozilla Suite Add-ons </a></p>
<p><a href="/faq.php">FAQ</a> <a href="/feeds.php">Feeds/RSS</a> <a href="/login.php">Log In</a> <a href="/logout.php">Logout</a> <a href="/createaccount.php">Register</a></p>
<p><a href="http://www.mozilla.org/privacy-policy.html">Privacy Policy</a> <a href="http://www.mozilla.org/foundation/donate.html">Donate to Mozilla</a> <a href="http://mozilla.org/">The Mozilla Organization</a></p>
<p><span>Copyright &#169; 2004-2006</span> <a href="http://www.xramp.com/">256-bit SSL Encryption provided by XRamp</a></p>
</div>
</div>
<!-- close container -->
<div class="disclaimer">
Mozilla is providing links to these applications as a courtesy, and makes no representations
regarding the applications or any information related thereto. Any questions, complaints or
claims regarding the applications must be directed to the appropriate software vendor. See
our <a href="/support.php">Support Page</a> for support information and contacts.
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

View File

@@ -1,740 +0,0 @@
/* General Structure */
/* copied from Mozilla.com */
body, td, th, input { /* redundant rules for bad browsers */
font-family: verdana, sans-serif;
font-size: x-small;
voice-family: "\"}\"";
voice-family: inherit;
font-size: small;
}
body {
background: #fff;
color: #333;
min-width: 610px;
margin: 0 0 1em 0;
padding: 0; /* need for Opera */
}
h1, h2, h3, h4, h5, h6 {
font-family: arial, verdana, sans-serif;
margin: 1em 0 0.2em 0;
}
li h1, li h2, li h3, li h4, li h5, li h6 {
border: none;
}
#header h1 { border: 0; }
h1 { font-size: 160%; font-weight: normal; }
h2 { font-size: 150%; font-weight: normal; }
h3 { font-size: 120%; }
h4 { font-size: 100%; }
h5 { font-size: 90%; }
h6 { font-size: 90%; border: 0; }
/* Navigation */
:link { color: #039; }
:visited { color: #636; }
:link:hover, :visited:hover { color: #333; }
:link:active, :link:active { color: #000; }
/* header copied from Mozilla.com */
#header {
background: #33415d url("../../images/rustico/header/header-background.png") top repeat-x;
position: relative;
height: 38px;
padding: 0 50px;
border-bottom: 1px solid #a1a6b1;
z-index: 1;
}
#header div {
position: relative;
max-width: 900px;
margin: 0 auto;
}
#header h1 { margin: 0; }
#header h1 img {
font-weight: bold;
color: #7f7c45;
}
#header ul {
position: absolute;
top: 0;
right: 0;
list-style: none;
margin: 0;
padding: 0;
border-left: 1px solid #576178;
border-right: 1px solid #1f2635;
} * html #header ul { right: 50px; }
#header li {
float: left;
margin: 0;
padding: 0;
}
#header ul span, #header ul a:link, #header ul a:visited {
display: block;
float: left;
padding: 10px 15px;
text-decoration: none;
border-right: 1px solid #576178;
border-left: 1px solid #1f2635;
color: #dee0e5;
height: 36px;
voice-family: "\"}\"";
voice-family: inherit;
height: 16px;
} #ignored {}
#header ul li span,
#header ul li a.current,
#header ul li a:hover {
background: #475470;
color: #fff;
text-decoration: underline;
}
#header ul li span,
#header ul li a.current {
text-decoration: none;
}
/* page title */
#page-title {
background: url("../../images/rustico/common/bg-header-small.jpg") repeat-x 50% 0;
}
#page-title div, #container {
max-width: 750px;
margin: 0 auto;
padding: 0 50px;
}
#page-title div {
background: url("../../images/rustico/common/firefox-addons-hdr.jpg") no-repeat 50% 0;
height: 170px;
} body>#page-title div { height: auto; min-height: 170px; }
#page-title div h2 {
margin: 0;
padding: 40px 0;
border: 0;
}
#page-title div h2 img {
border: 0;
}
/* mainContent */
#mainContent {
color: #3c475b;
line-height: 150%;
margin-left: 180px;
}
#mainContent hr {
margin: 2em;
}
#mainContent h3 {
font-weight: normal;
}
/* front page features */
.frontpage-intro {
margin-top: 0;
}
#top-extensions,
.front-recommended {
float: left;
width: 45%;
margin-right: 4%;
}
#home-rec-link img {
border: none;
float: right;
text-decoration: none;
margin-left: 10px;
}
.front-recommended img {
float: right;
margin: 0 20px;
}
.newest-extensions h3,
.top-extensions h3,
.front-recommended h3 {
padding-top: 5px;
}
.front-search-container {
float: left;
width: 45%;
}
.front-search-container img {
float: left;
}
.front-search-container h3 {
margin-left: 40px;
padding-top: 5px;
}
/* addon features */
.divider-bottom,
.bookmarkaddon-feature {
background: url(../../images/rustico/firefox-featured-divider.png) no-repeat bottom center;
margin-bottom: 1.5em;
padding-bottom: 10px;
}
#primary-feature {
margin-top: 2em;
}
.addon-feature h2 {
font-weight: bold;
margin: 0 0 5px 0;
}
.eula {
font-size: 75%;
}
.addon-feature h2 span {
font-weight: normal;
font-size: 80%;
}
.addon-feature h3,
.bookmarkaddon-feature h3 {
margin: 0 0 10px 0;
}
.addon-feature h4,
.bookmarkaddon-feature h4 {
margin: 0 0 10px 0;
}
.addon-feature h4 span,
.bookmarkaddon-feature h4 span {
font-weight: normal;
}
.addon-feature h1 span {
font-size: small;
}
.addon-feature h1 span.author {
font-size: smaller;
}
.addon-feature .search-result-image {
float: right;
margin: 10px 0 5px 10px;
}
.addon-feature .addon-feature-image,
.bookmarkaddon-feature .addon-feature-image {
float: left;
margin: 0 10px 0 0;
}
.preview-image a {
text-decoration: none;
text-align: center;
display: block;
font-size: smaller;
}
.addon-display .preview-image {
float: right;
}
.addon-display .version-and-date {
font-size: smaller;
}
.addon-feature .addon-feature-text { margin-left: 220px; }
.bookmarkaddon-feature .addon-feature-text { margin-left: 190px; }
.addon-feature a, .bookmarkaddon-feature a { color: #f7941d; }
.addon-feature a:visited, .bookmarkaddon-feature a:visited { color: #f7941d; }
.addon-feature a:hover, .bookmarkaddon-feature a:hover { color: #333; }
.recommended a, .recommended a:visited { color: #f7941d; }
.recommended a:hover { color: #333; }
.bookmarkstitle {
background: url(../../images/rustico/bookmarks/firefox-bm-puzzle-ico.png) no-repeat top left;
height: 27px;
padding: 5px 0 0 35px;
}
/* install button */
.install-button,
p.install-button {
width: 230px;
margin: 0;
}
span.install-button-text {
padding-right: 30px;
}
.install-button a:link span.install-green-button,
.install-button a:visited span.install-green-button,
.install-button a:hover span.install-green-button,
.install-button a:active span.install-green-button {
background: url(../../images/rustico/install-button.png) no-repeat bottom left;
display: block;
min-height: 20px;
padding: 10px;
}
* html .install-button a:link span.install-green-button,
* html .install-button a:visited span.install-green-button,
* html .install-button a:hover span.install-green-button,
* html .install-button a:active span.install-green-button { height: 20px; }
.install-button a:link,
.install-button a:visited,
.install-button a:hover,
.install-button a:active {
background: #a8ed2d url(../../images/rustico/install-button.png) no-repeat top left;
display: block;
color: #005825;
text-decoration: none;
}
.install-button a:hover span.install-green-button,
.install-button a:active span.install-green-button {
background: url(../../images/rustico/install-button.png) no-repeat bottom right;
}
.install-button a:hover,
.install-button a:active {
background: #89dc29 url(../../images/rustico/install-button.png) no-repeat top right;
color: #000;
cursor: hand;
}
/* corner box */
.corner-box {
background: url(../../images/rustico/left-top-corner-box.jpg) top left no-repeat;
margin: 0 0 10px 0;
padding: 12px 0 12px 15px;
}
.corner-box h3 {
margin-top: 0;
}
/* front page search */
#front-search {
margin-top: 1.5em;
}
#front-search label {
float: left;
width: 25%;
}
#front-search div {
float: left;
width: 70%
}
#front-search div .keywords {
margin-bottom: 0.5em;
}
/* search box */
.search-container img {
float: left;
}
.search-container h3 {
margin-left: 40px;
padding-top: 5px;
}
#extensions-search {
margin-top: 1.5em;
}
#extensions-search .keywords {
width: 40%;
}
#hide-search-options,
#search-options {
display: none;
}
#search-results .desc p {
margin-bottom: 0px;
}
#search-results h2 {
font-weight: bold;
}
#search-results h2 span {
font-weight: normal;
font-size: 80%;
}
#pages #next-page {
float: right;
}
/* various lists */
.compact-list {
font-size: 80%;
font-weight: bold;
}
.category-list {
padding-left: 3em;
font-weight: bold;
font-size: 90%;
}
.category-list td,
.compact-list td {
font-size: inherit;
}
.category-list td {
padding: 0 1.5em 0 1.5em;
}
.category-list a:link,
.category-list a:visited,
.compact-list a:link,
.compact-list a:visited {
text-decoration: none;
}
.compact-list span {
font-size: smaller;
}
/* menu box */
#menu-box {
float: left;
background: url(../../images/rustico/menu-box/menu-box-top.png) top left no-repeat;
font-size: 80%;
font-weight: bold;
width: 160px;
}
#menu-box ul {
background: url(../../images/rustico/menu-box/menu-box-bottom.png) bottom left no-repeat;
list-style-type: none;
margin: 0;
padding: 4px 0;
}
#menu-box ul li a:link,
#menu-box ul li a:visited,
#menu-box ul li span {
background: url(../../images/rustico/menu-box/menu-box-background.png) 0 0 no-repeat;
display: block;
width: 136px;
margin: 0;
padding: 8px 12px;
text-decoration: none;
}
#menu-box ul li span {
background: url(../../images/rustico/menu-box/menu-box-background.png) -400px 0 no-repeat;
}
#menu-box ul li a:hover,
#menu-box ul li a:active {
background: url(../../images/rustico/menu-box/menu-box-background.png) -200px 0 no-repeat;
}
/* footer */
#doc-links a,
#switch-links a,
#tool-links a {
padding: 0 1em;
}
#footer {
clear: both;
color: #888;
text-align: center;
margin: 0;
padding: 1em 0;
}
#footer ul {
margin: 1.5em 0;
}
#footer ul li {
display: inline;
margin: 0 0.5em;
}
#footer-addons-menu {
font-size: 110%;
padding: 0;
}
#footer-addons-menu li {
white-space: nowrap;
padding: 10px 0 5px 25px;
}
#footer-addons-menu li.firefox { background: url(../../images/rustico/footer/footer-icon-firefox.png) no-repeat center left; }
#footer-addons-menu li.thunderbird { background: url(../../images/rustico/footer/footer-icon-thunderbird.png) no-repeat center left; }
#footer-addons-menu li.mozilla { background: url(../../images/rustico/footer/footer-icon-mozilla.png) no-repeat center left; }
/* disclaimer */
#disclaimer {
clear: both;
background: url(../../images/rustico/footer/disclaimer.png) top repeat-x;
}
#disclaimer form {
float: right;
margin: 1em 50px 2em 25px;
}
#disclaimer form select {
font-size: 80%;
}
#disclaimer p {
max-width: 750px;
font-size: 80%;
margin: 0 auto;
padding: 10px 50px 20px 50px;
}
#disclaimer a { color: #f7941d; }
.clearfix:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.clearfix {display: inline-block;}
/* Hides from IE-mac \*/
* html .clearfix {height: 1%;}
.clearfix {display: block;}
/* End hide from IE-mac */
table {
border-collapse: collapse;
border: none;
margin: 1em 0;
}
table.dalvay-table {
border-collapse: separate;
}
table.dalvay-table thead th {
background: none;
}
table.dalvay-table thead td,
table.dalvay-table thead th {
background: #f9fafa url(/img/dalvay/table/header.png) top repeat-x;
border: 0;
}
table.dalvay-table thead .top-left {
background: url(/img/dalvay/table/top-left.png) top left no-repeat;
}
table.dalvay-table thead .top-right {
background: url(/img/dalvay/table/top-right.png) top right no-repeat;
}
td.left { border-left: 1px solid #d7d7d7; }
td.right { border-right: 1px solid #d7d7d7; }
table.dalvay-table tfoot td {
background: #f9fafa url(/img/dalvay/table/footer.png) bottom repeat-x;
border: 0;
}
table.dalvay-table tfoot .bottom-left {
background: url(/img/dalvay/table/bottom-left.png) bottom left no-repeat;
}
table.dalvay-table tfoot .bottom-right {
background: url(/img/dalvay/table/bottom-right.png) bottom right no-repeat;
}
table.dalvay-table tfoot td { height: 12px; }
table.dalvay-table tr.odd td { background: #fff; }
table.dalvay-table tr.even td { background: #eee; }
table.dalvay-table tr:target td { background: yellow; }
table.dalvay-table td.curVersion { font-weight: bold; }
table.dalvay-table td.nya { text-align: center; }
table.dalvay-table td,
table.dalvay-table th {
margin: 0;
padding: 0.5em;
}
table.dalvay-table td.dl,
table.dalvay-table th.dl {
white-space: nowrap;
}
table.dalvay-table th {
text-align: left;
}
/* search-engines */
.front-section {
width: 220px;
padding: 5px 0 5px 25px;
float: left;
color: #666;
}
#switch-links {
align: right;
padding-left: 5em;
}
#switch-links .switch-tb,
#switch-links .switch-suite {
padding: 1px 0 1px 30px;
font-size: 100%;
background: #fff 9px 0 no-repeat;
}
#switch-links .switch-tb {
background-image: url("../../images/switch-tb.gif");
}
#switch-links .switch-suite {
background-image: url("../../images/switch-suite.gif");
}
/* ported from cavendish */
.item {
border: #D2D6D6 1px solid;
padding-left: 5px;
padding-right: 6px;
MARGIN-bottom: 10px;
-moz-border-radius: 10px;
}
.item a {
color: #00129c;
text-decoration: none;
}
.item a:visited {
color: #00129c;
text-decoration: none;
}
.item a:hover {
color: #fc5900;
}
.item h2 {
margin-top: 0.2em;
}
.iconbar {
padding-right: 15px;
float: left;
width: auto;
height: 34px;
}
.iconbar img {
float:left;
}
.iconbar a {
text-decoration: none;
}
/* user comments */
div.averagerating {
float:right;
font-size:85%;
font-weight:bold;
}
div.usercomment {
border-top: 1px solid #eee;
}
p.commenttext {
margin-left: 2em;
}
p.commentmeta {
font-size: smaller;
}
.pages {
color: #999;
font-weight: bold;
height: 2em;
}
.next {
border-left: 1px solid #000;
display: inline;
padding-left: 5px;
}
.prev {
display: inline;
}
#comments-sort {
float: right;
}

View File

@@ -1,24 +0,0 @@
<?php
/**
* Dictionaries page.
*
* @package amo
* @subpackage docs
*/
startProcessing('dictionaries.tpl', 'dictionaries', $compileId, 'rustico');
require_once('includes.php');
setApp();
$amo = new AMO_Object();
$dicts = $amo->getDictionaries();
// Assign template variables.
$tpl->assign(
array( 'dicts' => $dicts,
'content' => 'dictionaries.tpl',
'currentTab' => 'dictionaries')
);
?>

View File

@@ -1,10 +0,0 @@
<?php
require_once(LIB.'/error.php');
$error = 'Test Error<br>';
$error .= 'Generated: '.date("r");
$error .= '<pre>'.print_r($_SERVER, true).'</pre>';
triggerError($error, 'site-down.tpl');
?>

View File

@@ -1,59 +0,0 @@
<?php
/**
* Home page for extensions, switchable on application. Since v1 used GUIDs, the
* flow on this page is a little confusing (we need to support both name and GUID.
*
* @package amo
* @subpackage docs
*/
$currentTab = 'extensions';
startProcessing('extensions.tpl', 'extensions', $compileId, "rustico");
require_once('includes.php');
$_app = array_key_exists('app', $_GET) ? $_GET['app'] : null;
// Determine our application.
switch( $_app ) {
case 'mozilla':
$clean['app'] = 'Mozilla';
break;
case 'thunderbird':
$clean['app'] = 'Thunderbird';
break;
case 'sunbird':
$clean['app'] = 'Sunbird';
break;
case 'firefox':
default:
$clean['app'] = 'Firefox';
break;
}
$amo = new AMO_Object();
// Despite what $clean holds, GUIDs were used in v1 so we have to support them
if (preg_match('/^(\{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}|[a-z0-9-\._]*\@[a-z0-9-\._]+)$/i',$_app)) {
$newestExtensions = $amo->getNewestAddonsByGuid($_app,'E',10);
$popularExtensions = $amo->getPopularAddonsByGuid($_app,'E',10);
/* This is a bit of a cheesy hack because of the way the templates are written.
* It's looking for the name of the app in $_GET, so here we are...*/
$_GET['app'] = strtolower($amo->getAppNameFromGuid($_app));
} else {
$newestExtensions = $amo->getNewestAddons($clean['app'],'E',10);
$popularExtensions = $amo->getPopularAddons($clean['app'],'E',10);
}
// Assign template variables.
$tpl->assign(
array( 'newestExtensions' => $newestExtensions,
'popularExtensions' => $popularExtensions,
'title' => 'Add-ons',
'currentTab' => $currentTab,
'content' => 'extensions.tpl',
'sidebar' => 'inc/category-sidebar.tpl',
'cats' => $amo->getCats('E'),
'type' => 'E')
);
?>

View File

@@ -1,73 +0,0 @@
<?php
/**
* FAQ page.
*
* @package amo
* @subpackage docs
*
* @todo FAQ search?
*/
startProcessing('faq.tpl','faq',$compileId, "rustico");
require_once('includes.php');
$db->query("
SELECT
`title`,
`text`
FROM
`faq`
WHERE
`active` = 'YES'
ORDER BY
`index` ASC,
`title` ASC
",SQL_ALL, SQL_ASSOC);
$faq = $db->record;
$sql = "
SELECT
`AppName`,
`GUID`,
`Version`
FROM
`applications`
WHERE
`public_ver`='YES'
ORDER BY
Appname, Version
";
$db->query($sql,SQL_ALL,SQL_ASSOC);
if (is_array($db->record)) {
foreach ($db->record as $row) {
$appVersions[] = array(
'displayVersion' => $row['Version'],
'appName' => $row['AppName'],
'guid' => $row['GUID']
);
}
}
$links = array(
array( 'href' => './faq.php',
'title' => 'Frequently Asked Questions',
'text' => 'FAQ'),
array( 'href' => './policy.php',
'title' => 'Addons Policies',
'text' => 'Policy')
);
// Send FAQ data to Smarty object.
$tpl->assign(
array( 'faq' => $faq,
'links' => $links,
'sidebar' => 'inc/nav.tpl',
'content' => 'faq.tpl',
'title' => 'Frequently Asked Questions',
'appVersions' => $appVersions )
);
?>

View File

@@ -1,17 +0,0 @@
<?php
/**
* Home page for extensions, switchable on application.
*
* @package amo
* @subpackage docs
*/
startProcessing('feeds.tpl', null, $compileId,'rustico');
require_once('includes.php');
// Assign template variables.
$tpl->assign(
array( 'title' => 'Feeds',
'content' => 'feeds.tpl')
);
?>

View File

@@ -1,175 +0,0 @@
<?php
// ***** BEGIN LICENSE BLOCK *****
// Version: MPL 1.1/GPL 2.0/LGPL 2.1
//
// The contents of this file are subject to the Mozilla Public License Version
// 1.1 (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
// http://www.mozilla.org/MPL/
//
// Software distributed under the License is distributed on an "AS IS" basis,
// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
// for the specific language governing rights and limitations under the
// License.
//
// The Original Code is Mozilla Update.
//
// The Initial Developer of the Original Code is
// Chris "Wolf" Crews.
// Portions created by the Initial Developer are Copyright (C) 2004
// the Initial Developer. All Rights Reserved.
//
// Contributor(s):
// Chris "Wolf" Crews <psychoticwolf@carolina.rr.com>
//
// Alternatively, the contents of this file may be used under the terms of
// either the GNU General Public License Version 2 or later (the "GPL"), or
// the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
// in which case the provisions of the GPL or the LGPL are applicable instead
// of those above. If you wish to allow use of your version of this file only
// under the terms of either the GPL or the LGPL, and not to allow others to
// use your version of this file under the terms of the MPL, indicate your
// decision by deleting the provisions above and replace them with the notice
// and other provisions required by the GPL or the LGPL. If you do not delete
// the provisions above, a recipient may use your version of this file under
// the terms of any one of the MPL, the GPL or the LGPL.
//
// ***** END LICENSE BLOCK *****
startProcessing('finalists.tpl',null,$compileId,'nonav');
require_once('includes.php');
/**
* Setting up variables.
*/
$guids = array(
'{34274bf4-1d97-a289-e984-17e546307e4f}',
'{097d3191-e6fa-4728-9826-b533d755359d}',
'{B9DAB69C-460E-4085-AE6C-F95B0D858581}',
'{DDC359D1-844A-42a7-9AA1-88A850A938A8}',
'{89506680-e3f4-484c-a2c0-ed711d481eda}',
'{3CE993BF-A3D9-4fd2-B3B6-768CBBC337F8}',
'{268ad77e-cff8-42d7-b479-da60a7b93305}',
'{77b819fa-95ad-4f2c-ac7c-486b356188a9}',
'{bbc21d30-1cff-11da-8cd6-0800200c9a66}',
'{37E4D8EA-8BDA-4831-8EA1-89053939A250}',
'{a089fffd-e0cb-431b-8d3a-ebb8afb26dcf}',
'Reveal@sourmilk.net',
'{a6ca9b3b-5e52-4f47-85d8-cca35bb57596}',
'{53A03D43-5363-4669-8190-99061B2DEBA5}',
'separe@m4ng0.lilik.it',
'xpose@viamatic.com',
'{c45c406e-ab73-11d8-be73-000a95be3b12}',
'{D5EDC062-A372-4936-B782-BD611DD18D86}'
);
$guids_tmp = array();
foreach ($guids as $guid) {
$guids_tmp[] = "'".$guid."'";
}
$guids_imploded = implode(',',$guids_tmp);
$descriptions = array(
'{34274bf4-1d97-a289-e984-17e546307e4f}'=>"Block ads including Flash ads from their source. Right click on an ad and select Adblock to block ads. Hit the status-element and see what has or hasn't been blocked.",
'{097d3191-e6fa-4728-9826-b533d755359d}'=>"Manage Extensions, Themes, Downloads, and more including Web content via Firefoxs sidebar.",
'{B9DAB69C-460E-4085-AE6C-F95B0D858581}'=>"Blog directly within Firefox to LiveJournal, WordPress or Blogger. Select Deepest Sender from the Tools menu.",
'{DDC359D1-844A-42a7-9AA1-88A850A938A8}'=>"DownThemAll lets you filter and download all the links contained in any web-page, and lets you pause and resume downloads from previous Firefox sessions.",
'{89506680-e3f4-484c-a2c0-ed711d481eda}'=>"View open Tabs and Windows with Showcase. You can use it in two ways: global mode (F12) or local mode (Shift + F12). In global mode, a new window will be opened with thumbnails of the pages you've opened in all windows. In local mode, only content in tabs of your current window will be shown.
You can also right click in those thumbnails to perform the most usual operations on them. Mouse middle button can be used to zoom a thumbnail, although other actions can be assigned to it.",
'{3CE993BF-A3D9-4fd2-B3B6-768CBBC337F8}'=>"Get international weather forecasts and display it in any toolbar or status bar.",
'{268ad77e-cff8-42d7-b479-da60a7b93305}'=>"Select from several of your favorite toolbars including including Google, Yahoo, Ask Jeeves, Teoma, Amazon, Download.com and others with one toolbar. The entire toolbar reconfigures when you select a different engine and it includes many advanced features found in each engine.
You can also easily repeat your search on all engines included in toolbar.",
'{77b819fa-95ad-4f2c-ac7c-486b356188a9}'=>"View pages with in Internet Explorer with IE Tab. Select the Firefox icon on the bottom right of the browser to switch to using the Internet Explorer engine or Firefox to switch to IE.",
'{bbc21d30-1cff-11da-8cd6-0800200c9a66}'=>"Allows sticky notes to be added to any web page, and viewed upon visiting the Web page again. You can also share sticky notes. Requires account.",
'{37E4D8EA-8BDA-4831-8EA1-89053939A250}'=>"PDF Download Extension allows you to choose if you want to view a PDF file inside the browser (as PDF or HTML), if you want to view it outside Firefox with your default or custom PDF reader, or if you want to download it.",
'{a089fffd-e0cb-431b-8d3a-ebb8afb26dcf}'=>"Platypus is a Firefox extension which lets you modify a Web page from your browser -- \"What You See Is What You Get\" -- and then save those changes as a GreaseMonkey script so that they'll be repeated the next time you visit the page.",
'Reveal@sourmilk.net'=>"Reveal allows you to see thumbnails of pages in your history by mousing over the back and forward buttons. With many tabs open, quickly find the page you want, by pressing F2. Reveal also has a rectangular magnifying glass you can use to zoom in on areas of any web page. Comes with a quick tour of all the features. ",
'{a6ca9b3b-5e52-4f47-85d8-cca35bb57596}'=>"A lightweight RSS and Atom feed aggregator. Alt+S to open Sage in the Sidebar to start reading feed content.",
'{53A03D43-5363-4669-8190-99061B2DEBA5}'=>"Highlight text, create sticky notes, and more to Web pages and Web sites that are saved to your desktop. Scrapbook Includes full text search and quick filtering of saved pages.",
'separe@m4ng0.lilik.it'=>"Manage tabs by creating a tab separator. Right click on a Tab to add a new Tab separator. Click on the Tab separator to view thumbnail images of web sites that are to the left and right of the Tab separator.",
'xpose@viamatic.com'=>"Click on the icon in the status bar to view all Web pages in Tabbed windows as thumbnail images. Press F8 to activate foXpose.",
'{c45c406e-ab73-11d8-be73-000a95be3b12}'=>"Web developer toolbar includes various development tools such as window resizing, form and image debugging, links to page validation and optimization tools and much more.",
'{D5EDC062-A372-4936-B782-BD611DD18D86}'=>"RSS news reader with integrated with services such as Feedster and weather information. Includes online help documentation."
);
$screenshots = array(
'{34274bf4-1d97-a289-e984-17e546307e4f}'=>'adblock-mini.png',
'{097d3191-e6fa-4728-9826-b533d755359d}'=>'all-in-one-mini.png',
'{B9DAB69C-460E-4085-AE6C-F95B0D858581}'=>'deepest-sender-mini.png',
'{DDC359D1-844A-42a7-9AA1-88A850A938A8}'=>'downthemall-small.png',
'{89506680-e3f4-484c-a2c0-ed711d481eda}'=>'firefox-showcase.png',
'{3CE993BF-A3D9-4fd2-B3B6-768CBBC337F8}'=>'forecastfoxenhanced-small.png',
'{268ad77e-cff8-42d7-b479-da60a7b93305}'=>'groowe-small.png',
'{77b819fa-95ad-4f2c-ac7c-486b356188a9}'=>'IE-Tab.png',
'{bbc21d30-1cff-11da-8cd6-0800200c9a66}'=>'stickies-small.png',
'{37E4D8EA-8BDA-4831-8EA1-89053939A250}'=>'pdf-download.png',
'{a089fffd-e0cb-431b-8d3a-ebb8afb26dcf}'=>'platypus.png',
'Reveal@sourmilk.net'=>'reveal.png',
'{a6ca9b3b-5e52-4f47-85d8-cca35bb57596}'=>'sage.png',
'{53A03D43-5363-4669-8190-99061B2DEBA5}'=>'scrapbook-final.png',
'separe@m4ng0.lilik.it'=>'separe.png',
'xpose@viamatic.com'=>'xpose-small.png',
'{c45c406e-ab73-11d8-be73-000a95be3b12}'=>'web-developer-toolbar-small.png',
'{D5EDC062-A372-4936-B782-BD611DD18D86}'=>'wizz-small.png'
);
$authors = array(
'{34274bf4-1d97-a289-e984-17e546307e4f}'=>'Ben Karel (and the Adblock Crew)',
'{DDC359D1-844A-42a7-9AA1-88A850A938A8}'=>'Federico Parodi',
'{a6ca9b3b-5e52-4f47-85d8-cca35bb57596}'=>'Peter Andrews (and the Sage Team)',
'{53A03D43-5363-4669-8190-99061B2DEBA5}'=>'Taiga Gomibuchi',
'separe@m4ng0.lilik.it'=>'Massimo Mangoni',
'{77b819fa-95ad-4f2c-ac7c-486b356188a9}'=>'yuoo2k and Hong Jen Yee (PCMan)'
);
$finalists = array();
// Get data for GUIDs.
$finalists_sql = "
SELECT
m.guid,
m.id,
m.name,
m.downloadcount,
m.homepage,
v.dateupdated,
v.uri,
v.size,
v.version,
(
SELECT u.username
FROM userprofiles u
JOIN authorxref a ON u.userid = a.userid
WHERE a.id = m.id
ORDER BY u.userid DESC
LIMIT 1
) as username
FROM
main m
JOIN version v ON m.id = v.id
WHERE
v.vid = (SELECT max(vid) FROM version WHERE id=m.id AND approved='YES') AND
type = 'E' AND
m.guid IN({$guids_imploded})
ORDER BY
LTRIM(m.name)
";
$db->query($finalists_sql, SQL_ALL, SQL_ASSOC);
foreach ($db->record as $var => $val) {
$val['author'] = !empty($authors[$val['guid']]) ? $authors[$val['guid']] : $val['username'];
$finalists[] = $val;
}
// Assign template variables.
$tpl->assign(
array(
'title' => 'Extend Firefox Contest Finalists',
'screenshots' => $screenshots,
'descriptions' => $descriptions,
'finalists' => $finalists,
'content' => 'finalists.tpl')
);
?>

View File

@@ -1,30 +0,0 @@
<?php
/**
* Addon history page. Displays all the previous releases for a particular
* addon or theme
*
* @package amo
* @subpackage docs
*
* @todo break this into a simpler design, probably a smaller table with an abbreviated desc.
* @todo do we still want to allow users access to old versions?
*/
// Get our addon ID.
$clean['ID'] = intval($_GET['id']);
$sql['ID'] =& $clean['ID'];
startProcessing('history.tpl',$clean['ID'],$compileId, 'rustico');
require_once('includes.php');
$addon = new AddOn($sql['ID']);
$addon->getHistory();
// Assign template variables.
$tpl->assign(
array( 'addon' => $addon,
'title' => $addon->Name.' Version History',
'content' => 'history.tpl',
'sidebar' => 'inc/addon-sidebar.tpl')
);
?>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 526 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 776 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 757 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 349 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 394 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 988 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 741 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 791 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 936 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 877 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 917 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 386 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Some files were not shown because too many files have changed in this diff Show More