Initial commit

This commit is contained in:
VirtuBrick 2024-01-18 23:23:16 -05:00
commit ff585f123f
816 changed files with 1381020 additions and 0 deletions

16
.htaccess Normal file
View File

@ -0,0 +1,16 @@
ErrorDocument 403 /RobloniumDefaultErrorPage.aspx?code=403
ErrorDocument 404 /RobloniumDefaultErrorPage.aspx?code=404
ErrorDocument 500 /RobloniumDefaultErrorPage.aspx?code=500
RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -f
<FilesMatch Friends>
RewriteEngine Off
SetHandler application/x-httpd-php
</FilesMatch>
RewriteRule (.*) $1.php [L]
RewriteRule ^(.*?(\b-place\b)[^$]*) PlaceItem.aspx
RewriteRule ^(.*?(\b-item\b)[^$]*) Item.aspx

3
500.ashx Normal file
View File

@ -0,0 +1,3 @@
<?php
http_response_code(500);
?>

600
API/AvatarRules.ashx Normal file
View File

@ -0,0 +1,600 @@
<?php
header('Content-Type: application/json; charset=utf-8');
ob_start();
?>
{
"wearableAssetTypes":[
{
"maxNumber":3,
"id":8,
"name":"Hat"
},
{
"maxNumber":1,
"id":18,
"name":"Face"
},
{
"maxNumber":1,
"id":19,
"name":"Gear"
},
{
"maxNumber":1,
"id":17,
"name":"Head"
},
{
"maxNumber":1,
"id":29,
"name":"Left Arm"
},
{
"maxNumber":1,
"id":30,
"name":"Left Leg"
},
{
"maxNumber":1,
"id":12,
"name":"Pants"
},
{
"maxNumber":1,
"id":28,
"name":"Right Arm"
},
{
"maxNumber":1,
"id":31,
"name":"Right Leg"
},
{
"maxNumber":1,
"id":11,
"name":"Shirt"
},
{
"maxNumber":1,
"id":2,
"name":"T-Shirt"
},
{
"maxNumber":1,
"id":27,
"name":"Torso"
}
],
"bodyColorsPalette":[
{
"brickColorId":361,
"hexColor":"#564236",
"name":"Dirt brown"
},
{
"brickColorId":192,
"hexColor":"#694028",
"name":"Reddish brown"
},
{
"brickColorId":217,
"hexColor":"#7C5C46",
"name":"Brown"
},
{
"brickColorId":153,
"hexColor":"#957977",
"name":"Sand red"
},
{
"brickColorId":359,
"hexColor":"#AF9483",
"name":"Linen"
},
{
"brickColorId":352,
"hexColor":"#C7AC78",
"name":"Burlap"
},
{
"brickColorId":5,
"hexColor":"#D7C59A",
"name":"Brick yellow"
},
{
"brickColorId":101,
"hexColor":"#DA867A",
"name":"Medium red"
},
{
"brickColorId":1007,
"hexColor":"#A34B4B",
"name":"Dusty Rose"
},
{
"brickColorId":1014,
"hexColor":"#AA5500",
"name":"CGA brown"
},
{
"brickColorId":38,
"hexColor":"#A05F35",
"name":"Dark orange"
},
{
"brickColorId":18,
"hexColor":"#CC8E69",
"name":"Nougat"
},
{
"brickColorId":125,
"hexColor":"#EAB892",
"name":"Light orange"
},
{
"brickColorId":1030,
"hexColor":"#FFCC99",
"name":"Pastel brown"
},
{
"brickColorId":133,
"hexColor":"#D5733D",
"name":"Neon orange"
},
{
"brickColorId":106,
"hexColor":"#DA8541",
"name":"Bright orange"
},
{
"brickColorId":105,
"hexColor":"#E29B40",
"name":"Br. yellowish orange"
},
{
"brickColorId":1017,
"hexColor":"#FFAF00",
"name":"Deep orange"
},
{
"brickColorId":24,
"hexColor":"#F5CD30",
"name":"Bright yellow"
},
{
"brickColorId":334,
"hexColor":"#F8D96D",
"name":"Daisy orange"
},
{
"brickColorId":226,
"hexColor":"#FDEA8D",
"name":"Cool yellow"
},
{
"brickColorId":141,
"hexColor":"#27462D",
"name":"Earth green"
},
{
"brickColorId":1021,
"hexColor":"#3A7D15",
"name":"Camo"
},
{
"brickColorId":28,
"hexColor":"#287F47",
"name":"Dark green"
},
{
"brickColorId":37,
"hexColor":"#4B974B",
"name":"Bright green"
},
{
"brickColorId":310,
"hexColor":"#5B9A4C",
"name":"Shamrock"
},
{
"brickColorId":317,
"hexColor":"#7C9C6B",
"name":"Moss"
},
{
"brickColorId":119,
"hexColor":"#A4BD47",
"name":"Br. yellowish green"
},
{
"brickColorId":1011,
"hexColor":"#002060",
"name":"Navy blue"
},
{
"brickColorId":1012,
"hexColor":"#2154B9",
"name":"Deep blue"
},
{
"brickColorId":1010,
"hexColor":"#0000FF",
"name":"Really blue"
},
{
"brickColorId":23,
"hexColor":"#0D69AC",
"name":"Bright blue"
},
{
"brickColorId":305,
"hexColor":"#527CAE",
"name":"Steel blue"
},
{
"brickColorId":102,
"hexColor":"#6E99CA",
"name":"Medium blue"
},
{
"brickColorId":45,
"hexColor":"#B4D2E4",
"name":"Light blue"
},
{
"brickColorId":107,
"hexColor":"#008F9C",
"name":"Bright bluish green"
},
{
"brickColorId":1018,
"hexColor":"#12EED4",
"name":"Teal"
},
{
"brickColorId":1027,
"hexColor":"#9FF3E9",
"name":"Pastel blue-green"
},
{
"brickColorId":1019,
"hexColor":"#00FFFF",
"name":"Toothpaste"
},
{
"brickColorId":1013,
"hexColor":"#04AFEC",
"name":"Cyan"
},
{
"brickColorId":11,
"hexColor":"#80BBDC",
"name":"Pastel Blue"
},
{
"brickColorId":1024,
"hexColor":"#AFDDFF",
"name":"Pastel light blue"
},
{
"brickColorId":104,
"hexColor":"#6B327C",
"name":"Bright violet"
},
{
"brickColorId":1023,
"hexColor":"#8C5B9F",
"name":"Lavender"
},
{
"brickColorId":321,
"hexColor":"#A75E9B",
"name":"Lilac"
},
{
"brickColorId":1015,
"hexColor":"#AA00AA",
"name":"Magenta"
},
{
"brickColorId":1031,
"hexColor":"#6225D1",
"name":"Royal purple"
},
{
"brickColorId":1006,
"hexColor":"#B480FF",
"name":"Alder"
},
{
"brickColorId":1026,
"hexColor":"#B1A7FF",
"name":"Pastel violet"
},
{
"brickColorId":21,
"hexColor":"#C4281C",
"name":"Bright red"
},
{
"brickColorId":1004,
"hexColor":"#FF0000",
"name":"Really red"
},
{
"brickColorId":1032,
"hexColor":"#FF00BF",
"name":"Hot pink"
},
{
"brickColorId":1016,
"hexColor":"#FF66CC",
"name":"Pink"
},
{
"brickColorId":330,
"hexColor":"#FF98DC",
"name":"Carnation pink"
},
{
"brickColorId":9,
"hexColor":"#E8BAC8",
"name":"Light reddish violet"
},
{
"brickColorId":1025,
"hexColor":"#FFC9C9",
"name":"Pastel orange"
},
{
"brickColorId":364,
"hexColor":"#5A4C42",
"name":"Dark taupe"
},
{
"brickColorId":351,
"hexColor":"#BC9B5D",
"name":"Cork"
},
{
"brickColorId":1008,
"hexColor":"#C1BE42",
"name":"Olive"
},
{
"brickColorId":29,
"hexColor":"#A1C48C",
"name":"Medium green"
},
{
"brickColorId":1022,
"hexColor":"#7F8E64",
"name":"Grime"
},
{
"brickColorId":151,
"hexColor":"#789082",
"name":"Sand green"
},
{
"brickColorId":135,
"hexColor":"#74869D",
"name":"Sand blue"
},
{
"brickColorId":1020,
"hexColor":"#00FF00",
"name":"Lime green"
},
{
"brickColorId":1028,
"hexColor":"#CCFFCC",
"name":"Pastel green"
},
{
"brickColorId":1009,
"hexColor":"#FFFF00",
"name":"New Yeller"
},
{
"brickColorId":1029,
"hexColor":"#FFFFCC",
"name":"Pastel yellow"
},
{
"brickColorId":1003,
"hexColor":"#111111",
"name":"Really black"
},
{
"brickColorId":26,
"hexColor":"#1B2A35",
"name":"Black"
},
{
"brickColorId":199,
"hexColor":"#635F62",
"name":"Dark stone grey"
},
{
"brickColorId":194,
"hexColor":"#A3A2A5",
"name":"Medium stone grey"
},
{
"brickColorId":1002,
"hexColor":"#CDCDCD",
"name":"Mid gray"
},
{
"brickColorId":208,
"hexColor":"#E5E4DF",
"name":"Light stone grey"
},
{
"brickColorId":1,
"hexColor":"#F2F3F3",
"name":"White"
},
{
"brickColorId":1001,
"hexColor":"#F8F8F8",
"name":"Institutional white"
}
],
"basicBodyColorsPalette":[
{
"brickColorId":364,
"hexColor":"#5A4C42",
"name":"Dark taupe"
},
{
"brickColorId":217,
"hexColor":"#7C5C46",
"name":"Brown"
},
{
"brickColorId":359,
"hexColor":"#AF9483",
"name":"Linen"
},
{
"brickColorId":18,
"hexColor":"#CC8E69",
"name":"Nougat"
},
{
"brickColorId":125,
"hexColor":"#EAB892",
"name":"Light orange"
},
{
"brickColorId":361,
"hexColor":"#564236",
"name":"Dirt brown"
},
{
"brickColorId":192,
"hexColor":"#694028",
"name":"Reddish brown"
},
{
"brickColorId":351,
"hexColor":"#BC9B5D",
"name":"Cork"
},
{
"brickColorId":352,
"hexColor":"#C7AC78",
"name":"Burlap"
},
{
"brickColorId":5,
"hexColor":"#D7C59A",
"name":"Brick yellow"
},
{
"brickColorId":153,
"hexColor":"#957977",
"name":"Sand red"
},
{
"brickColorId":1007,
"hexColor":"#A34B4B",
"name":"Dusty Rose"
},
{
"brickColorId":101,
"hexColor":"#DA867A",
"name":"Medium red"
},
{
"brickColorId":1025,
"hexColor":"#FFC9C9",
"name":"Pastel orange"
},
{
"brickColorId":330,
"hexColor":"#FF98DC",
"name":"Carnation pink"
},
{
"brickColorId":135,
"hexColor":"#74869D",
"name":"Sand blue"
},
{
"brickColorId":305,
"hexColor":"#527CAE",
"name":"Steel blue"
},
{
"brickColorId":11,
"hexColor":"#80BBDC",
"name":"Pastel Blue"
},
{
"brickColorId":1026,
"hexColor":"#B1A7FF",
"name":"Pastel violet"
},
{
"brickColorId":321,
"hexColor":"#A75E9B",
"name":"Lilac"
},
{
"brickColorId":107,
"hexColor":"#008F9C",
"name":"Bright bluish green"
},
{
"brickColorId":310,
"hexColor":"#5B9A4C",
"name":"Shamrock"
},
{
"brickColorId":317,
"hexColor":"#7C9C6B",
"name":"Moss"
},
{
"brickColorId":29,
"hexColor":"#A1C48C",
"name":"Medium green"
},
{
"brickColorId":105,
"hexColor":"#E29B40",
"name":"Br. yellowish orange"
},
{
"brickColorId":24,
"hexColor":"#F5CD30",
"name":"Bright yellow"
},
{
"brickColorId":334,
"hexColor":"#F8D96D",
"name":"Daisy orange"
},
{
"brickColorId":199,
"hexColor":"#635F62",
"name":"Dark stone grey"
},
{
"brickColorId":1002,
"hexColor":"#CDCDCD",
"name":"Mid gray"
},
{
"brickColorId":1001,
"hexColor":"#F8F8F8",
"name":"Institutional white"
}
]
}
<?php
echo(json_encode(json_decode(ob_get_clean())));
?>

82
API/Item.ashx Normal file
View File

@ -0,0 +1,82 @@
<?php
require $_SERVER["DOCUMENT_ROOT"] . '/global.php';
//if ($_SERVER['REQUEST_METHOD'] !== 'POST') { die(header("Location: /RobloniumDefaultErrorPage.aspx?code=400")); }
function errorModal($title, $errorMsg)
{
die(json_encode(array(
'statusCode' => 500,
'showDivID' => 'TransactionFailureView',
'title' => $title,
'errorMsg' => $errorMsg
)));
}
header('Content-Type: application/json; charset=utf-8');
if(!SESSION)
{
errorModal("Transaction Error", "You are not logged in.");
}
if(!isset($_GET['productID']) || !isset($_GET['expectedCurrency']) || !isset($_GET['expectedPrice']) || !isset($_GET['expectedSellerID']) || !isset($_GET['rqtype']))
{
errorModal("Transaction Error", "An error occured when trying to fetch data. Please try again.");
}
$assetInfo = getMarketplaceInfo($_GET['productID']);
if(!$assetInfo){ errorModal("Transaction Error", "This item does not exist."); }
if(!$assetInfo->IsForSale){ errorModal("Transaction Error", "This item is not for sale."); }
if(($assetInfo->PriceInRobux || $assetInfo->PriceInRobux + $assetInfo->PriceInTickets == 0) && $_GET['expectedCurrency'] == 1)
{
$expectedCurrency = 1;
$price = $assetInfo->PriceInRobux;
$balanceAfterSale = SESSION["robux"] - $price;
}
elseif($assetInfo->PriceInTickets && $_GET['expectedCurrency'] == 2)
{
$expectedCurrency = 2;
$price = $assetInfo->PriceInTickets;
$balanceAfterSale = SESSION["tickets"] - $price;
}
elseif($_GET['expectedCurrency'] != $price)
{
die(json_encode([
'statusCode' => 500,
'showDivID' => 'PriceChangedView',
'title' => 'Price Changed',
'errorMsg' => 'This item has changed price. Please try again.',
//'balanceAfterSale' => $balanceAfterSale,
//'expectedPrice' => $_GET['expectedPrice'],
//'expectedCurrency' => $_GET['expectedCurrency'],
//'currentCurrency' => $expectedCurrency,
//'currentPrice' => $price,
'AssetID' => $assetInfo->AssetId
]));
}
if($_GET['expectedSellerID'] != $assetInfo->CreatorId){ errorModal("Transaction Error", "An error occured when verifying data. Please try again."); }
$purchaseResult = purchaseAsset(SESSION["userid"], $assetInfo->AssetId, $expectedCurrency);
if($purchaseResult == "Success")
{
$purchaseMessage =
[
'TransactionVerb' => 'purchased',
'AssetName' => $assetInfo->Name,
'AssetType' => assetTypeToString($assetInfo->AssetTypeId),
'Price' => $price,
'Currency' => 1,
'SellerName' => getNameFromUid($assetInfo->CreatorId), //this is changed later based on the seller name
'AssetID' => $assetInfo->AssetId,
'expectedCurrency' => $expectedCurrency,
'currentCurrency' => $_GET['expectedCurrency']
];
echo json_encode($purchaseMessage);
}
else
{
die(errorModal("Transaction Error", $purchaseResult));
}

View File

@ -0,0 +1,61 @@
<?php
header("content-type: application/json; charset=utf-8");
require_once $_SERVER['DOCUMENT_ROOT']."/Hexine/api/core_functions.php";
function returnError($code, $message, $type = 0)
{
if($type == 0){ $array = ["code" => $code, "message" => $message]; }
else{ $array = ['errors' =>[['code' => 400,'message' => 'BadRequest']]]; }
header("HTTP/1.1 $code $message");
die(json_encode($array));
}
// some checks
if(isset($_GET['assetId'])){ $assetId = $_GET['assetId']; } else { returnError(500, "InternalServerError"); }
if(!filter_var($assetId, FILTER_VALIDATE_INT)){ returnError(500, "InternalServerError"); }
if(isset($_GET['rbx'])){ die(file_get_contents("http://api.roblox.com/marketplace/productinfo?".$_SERVER['QUERY_STRING'])); }
//then query
$query = $pdo->prepare("SELECT * FROM asset WHERE AssetId = :id");
$query->bindParam(":id", $assetId, PDO::PARAM_INT);
$query->execute();
if(!$query->rowCount()){ returnError(400, "BadRequest", 1); }
$row = $query->fetch(PDO::FETCH_OBJ);
//check if the item was created in the last 3 days to determine whether it's new or not
$timestamp = strtotime($row->Created);
if($timestamp + 259200 > time()){ $IsNew = true; } else{ $IsNew = false; }
$data =
[
'TargetId' => intval($row->AssetId),
'ProductType' => 'User Product',
'AssetId' => intval($row->AssetId),
'ProductId' => 1305046,
'Name' => $row->Name,
'Description' => $row->Description,
'AssetTypeId' => $row->AssetTypeId,
'Creator' =>
[
'Id' => intval($row->CreatorId),
'Name' => getNameFromUid($row->CreatorId),
'CreatorType' => 'User',
'CreatorTargetId' => intval($row->CreatorId)
],
'IconImageAssetId' => 607948062,
'Created' => $row->Created,
'Updated' => $row->Updated,
'PriceInRobux' => intval($row->PriceInRobux),
'PriceInTickets' => intval($row->PriceInTickets),
'Sales' => intval($row->Sales),
'IsNew' => $IsNew,
'IsForSale' => boolval($row->IsForSale),
'IsPublicDomain' => boolval($row->IsPublicDomain),
'IsLimited' => boolval($row->IsLimited),
'IsLimitedUnique' => boolval($row->IsLimitedUnique),
'Remaining' => intval($row->Remaining),
'MinimumMembershipLevel' => intval($row->MinimumMembershipLevel),
'ContentRatingTypeId' => intval($row->ContentRatingTypeId)
];
die(json_encode($data));

View File

@ -0,0 +1,5 @@
<?php
$post = file_get_contents('php://input');
$data = file_get_contents($_SERVER["DOCUMENT_ROOT"]."../Analytics/Logs/Report.log") . "\n" . $post;
file_put_contents($_SERVER["DOCUMENT_ROOT"]."../Analytics/Logs/Report.log", $data);
?>

3
Account/.htaccess Normal file
View File

@ -0,0 +1,3 @@
<FilesMatch $>
SetHandler application/x-httpd-php
</FilesMatch>

View File

@ -0,0 +1,9 @@
<?php
header('Content-Type:application/json');
$newModal = [
"title" => "Error",
"message" => "An unkown error occurred!"
];
$newModal['message'] = "Sorry, but username changing has not been implemented yet.";
die(json_encode($newModal));
?>

80
Admi/CSS/ABTests.css Normal file
View File

@ -0,0 +1,80 @@
.experiment {
clear: both;
font-weight: bold;
}
.experiment-details {
float: left;
}
.experiment-details span.name {
font-weight: bold;
font-size: 14px;
}
.versions {
clear: both;
}
.versions .version {
margin-top: 10px;
}
.eligibility-criteria-box {
min-height: 300px;
}
.eligibility-control-button {
width: 100px;
}
.new-version {
margin-right: 10px;
}
input.short {
width: 60px;
margin-bottom: 5px;
display: inline-block;
}
.dialog-label {
font-weight:normal;
}
.varation_percentage_container {
width: 100px;
display: inline-block;
}
.border-bottom {
border-bottom: 1px solid #ccc;
}
.clear {
clear: both;
font-weight: normal;
}
.ContentPaneFloat {
min-width: 1000px;
}
.hint {
font-size: 11px;
color: #666;
}
.hide-version {
display: none;
}
.hide {
display: none;
}
.label {
font-weight: normal;
}
.labelheader {
width: 170px;
display: inline-block;
font-weight: bold;
padding-top: 3px;
}
.labelheader.details {
font-weight: normal;
}
.version-details {
font-weight: normal;
}
.buttons span {
float: left;
display: block;
}

427
Admi/CSS/Admi.css Normal file
View File

@ -0,0 +1,427 @@
.pointer {
cursor: pointer;
}
span.ErrorMessage {
font-weight: bold;
color: red;
}
div.adminDash
{
color:#585858;
}
div#recaptcha_area
{
margin: 0 auto;
margin-left: -40px;
}
div.NavigationPaneFloat .navSection
{
padding-left:10px;
}
div.NavigationPaneFloat ul
{
margin:0px;
margin-bottom:10px;
}
span.robux, .currency.CurrencyColor1 {
background: url('/UnsecureContent/images/img-robux.png') no-repeat 0px 1px;
color: #060;
font-weight: bold;
padding: 0px 0px 2px 20px;
font-size: 12px;
}
span.tickets, .currency.CurrencyColor2 {
background: url('/UnsecureContent/images/Tickets.png') no-repeat 0px 1px;
color: #A61;
padding: 0px 0px 2px 20px;
font-weight: bold;
font-size: 12px;
}
div.navHeader
{
border-bottom: 1px solid #DDD;
margin-bottom: 5px;
margin-top: 10px;
padding-left: 10px;
color: #4D4D4D;
font-weight: bold;
font-size: 15px;
cursor: pointer;
}
body {
font-family: Arial,Helvetica,sans-serif;
font-size: 13px;
background-color: #FCFCFC;
margin: 0;
}
.body-with-header {
padding-top: 75px;
}
div.header
{
margin:0 0 10px;
background: #F0F0F0;
text-align: right;
padding: 5px 5px 5px 5px;
border-top: 2px solid #3679BC;
height: 18px;
}
a
{
color: #095fb5;
text-decoration: none;
}
a:hover
{
text-decoration: underline;
cursor: pointer;
}
div.header div.headerFloatLeft span.redBoldWarn
{ color: red;
font-weight: bold;
}
div.ContentPaneFloat
{
padding-left: 230px;
min-height:500px;
}
div.NavigationPaneFloat
{
float:left;
width:220px;
padding: 0 10px;
}
h1
{
margin-top:35px;
margin-bottom:12px;
font-size: 40px;
font-weight: bold;
color:#363636;
letter-spacing:-2px;
}
h2
{
font-size:16px;
font-weight:bold;
text-transform: uppercase;
color:#000;
}
/* Legacy */
.StandardTabWhite,
.StandardTabGrayActive,
.StandardTabGray
{
display:inline-block;
height:26px;
z-index: 2;
position:relative;
*display:inline;
*zoom:1;
}
.StandardTabWhite span
{
*padding-right:14px;
}
.StandardTabGray
{
background-color: #b4cde9;
margin-right: 4px;
}
li.ConfigTabs
{
padding: 6px 10px 0px 10px;
}
.StandardTabGrayActive
{
margin-right: 4px;
}
.StandardTabGray a,
.StandardTabGrayActive a
{
color: White;
}
.StandardTabGray a:hover,
.StandardTabGrayActive a:hover
{
text-decoration:none;
}
.StandardTabGray:hover,
.StandardTabGrayActive
{
background-color: #6c98cb;
color: White;
}
div.header div.headerFloatLeft
{
float:left;
}
div.header div.headerFloatRight
{
float:right;
}
.BadgeLists { width:150px;}
.LoyaltyDateTextbox { width:80px}
/* login page */
div.Signin
{
margin: 0 auto;
width: 198px;
margin-top: 150px;
color: #666;
}
div.Signin .formRow
{
margin-bottom: 5px;
}
div.Signin .formRow label
{
display: block;
}
div.Signin .formRow input
{
border: 1px solid #999;
padding: 3px;
width: 190px;
}
div.Signin .formRowSubmit
{
text-align: right;
margin-top: 12px;
}
div.Signin .formRowSubmit input
{
border: 1px solid #999;
padding: 3px 6px;
border-radius: 3px;
margin: 0;
}
div.Signin .formRowSubmit input:hover
{
cursor: pointer;
background: white;
color: #666;
}
/* Dividers */
.divider-top {
border-top: 1px solid #ccc;
}
.divider-bottom {
border-bottom: 1px solid #ccc;
}
.divider-left {
border-left: 1px solid #ccc;
}
.divider-right {
border-right: 1px solid #ccc;
}
.error-message {
color: black;
background-color: #FAE5E5;
border: solid 1px #c00;
margin-bottom: 10px;
text-align: left;
padding: 3px 10px;
}
/* Styles for validation helpers
-----------------------------------------------------------*/
.field-validation-error
{
color: #ff0000;
}
.field-validation-valid
{
display: none;
}
.input-validation-error
{
border: 1px solid #ff0000 !important;
background-color: #ffeeee;
}
.validation-summary-errors
{
font-weight: bold;
color: #ff0000;
}
.validation-summary-valid
{
display: none;
}
/* paging */
.pager {
margin: 4px 7px 2px 4px;
}
.pager.first,
.pager.last {
display: none;
}
.pager.previous {
display: inline-block;
background: url('/UnsecureContent/images/buttons/btn-silver-left-27.png') no-repeat top left;
width: 27px;
height: 27px;
}
.pager.next {
display: inline-block;
background: url('/UnsecureContent/images/buttons/btn-silver-right-27.png') no-repeat top left;
width: 27px;
height: 27px;
}
.page.text {
position: relative;
top: -8px;
padding: 5px;
*top:-4px;
}
.pager.previous:hover,
.pager.next:hover {
background-position: bottom left;
cursor: pointer;
}
.pager.disabled,
.pager.disabled:hover
{
background-position: 0px -27px;
cursor: default;
}
.btn-group .btn-rightalone {
margin-right: 3px;
}
/* better paging */
.paging-container-div-top
{
text-align: center;
margin: 5px 0px 0px 0px;
}
.paging-container-div-top div
{
display:-moz-inline-stack;
display:inline-block;
zoom:1;
*display:inline;
}
.paging-input {
width: 35px;
text-align: center;
}
/* bootstrap override */
.nav > li > a {
padding: 2px 10px;
}
.row {
margin-right: 0px;
margin-left: -0px;
}
.dropdown-menu.service-buttons {
min-width: 30px;
}
.modal-danger {
color: #ffffff;
background-color: #d9534f;
border-color: #d43f3a;
}
.well-closest {
margin-bottom: 3px;
}
.panel-closest {
padding: 5px;
}
.row-separate {
margin-bottom: 3px;
}
.ui-autocomplete{
position: fixed;
top: 100%;
left: 0;
z-index: 1051 !important;
left: 0;
cursor: default;
}
/* end bootstrap override */
.no-padding {
padding: 0;
}
#duo_iframe {
border: none;
width: 100%;
/* ReSharper disable CssBrowserCompatibility */
min-width: 304px;
/* ReSharper restore CssBrowserCompatibility */
max-width: 620px;
height: 330px;
display: block;
margin-top: 50px;
margin: 50px auto 0 auto;
}
#duo_form {
display: none;
}
div.navbar-fixed-top {
min-height: 40px;
margin-bottom: 5px;
padding: 0;
}
a.navbar-brand, p.navbar-brand {
height: 12px;
padding: 1px 3px;
margin: 0;
font-size: 10px;
}
@media (min-width: 470px) {
a.navbar-brand, p.navbar-brand {
height: 25px;
font-size: 16px;
padding-top: 10px;
margin: 0;
}
}
@media (min-width: 600px) {
a.navbar-brand, p.navbar-brand {
font-size: 18px;
padding-top: 10px;
}
p.sign-out-link {
float: right;
}
}

492
Admi/CSS/Admi2.css Normal file
View File

@ -0,0 +1,492 @@
body
{
font-family:Arial,Helvetica,sans-serif;
font-size:13px;
background: #FCFCFC;
margin: 0;
}
div.header
{
margin:0 0 10px;
background: #F0F0F0;
text-align: right;
padding: 5px;
border-top: 2px solid #3679BC;
height: 18px;
}
a
{
color: #095fb5;
text-decoration: none;
}
a:hover
{
text-decoration: underline;
}
div.ContentPaneFloat
{
float:left;
padding-left: 230px;
min-height:500px;
}
div.NavigationPaneFloat
{
position:absolute;
width:200px;
border-right: 1px solid #F0F0F0;
}
div.NavigationPaneFloat .navSection
{
padding-left:10px;
}
div.NavigationPaneFloat ul
{
margin:0px;
margin-bottom:10px;
}
div.navHeader
{
margin-bottom: 10px;
margin-top: 15px;
color: #999999;
font-weight: bold;
font-size: 15px;
}
h1
{
margin-top:35px;
margin-bottom:12px;
font-size: 40px;
font-weight: bold;
color:#363636;
letter-spacing:-2px;
}
h2
{
font-size:16px;
font-weight:bold;
text-transform: uppercase;
color:#000;
}
/* Legacy */
.StandardTabWhite,
.StandardTabGrayActive,
.StandardTabGray
{
display:inline-block;
height:26px;
z-index: 2;
position:relative;
*display:inline;
*zoom:1;
}
.StandardTabWhite span
{
*padding-right:14px;
}
.StandardTabGray
{
background-color: #b4cde9;
margin-right: 4px;
}
li.ConfigTabs
{
padding: 6px 10px 0px 10px;
}
.StandardTabGrayActive
{
margin-right: 4px;
}
.StandardTabGray a,
.StandardTabGrayActive a
{
color: White;
}
.StandardTabGray a:hover,
.StandardTabGrayActive a:hover
{
text-decoration:none;
}
.StandardTabGray:hover,
.StandardTabGrayActive
{
background-color: #6c98cb;
color: White;
}
div.Signin
{
margin: 0 auto;
width: 198px;
margin-top: 150px;
color: #666;
}
div.Signin .formRow
{
margin-bottom: 5px;
}
div.Signin .formRow label
{
display: block;
}
div.Signin .formRow input
{
border: 1px solid #999;
padding: 3px;
width: 190px;
}
div.Signin .formRowSubmit
{
text-align: right;
margin-top: 12px;
}
div.Signin .formRowSubmit input
{
border: 1px solid #999;
padding: 3px 6px;
border-radius: 3px;
margin: 0;
}
div.Signin .formRowSubmit input:hover
{
cursor: pointer;
background: white;
color: #666;
}
div.header div.headerFloatLeft
{
float:left;
}
div.header div.headerFloatRight
{
float:right;
}
div#recaptcha_area
{
margin: 0 auto;
margin-left: -40px;
}
/* mvc pages */
#GroupName {
width: 550px;
height: 20px;
margin-bottom: 3px;
}
#NamePattern {
width: 550px;
height: 20px;
}
#messageDiv {
display: none;
}
/* div containing lists of settings, maybe populated with ajax */
.resultsContainer {
margin-top: 20px;
}
.settingsTableCaption {
padding: 3px;
}
.settingsTable
{
border-collapse: collapse;
font-size: 12px;
}
.settingsTable td {
white-space: nowrap;
}
.settingsTable td div
{
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.infoMessage {
display: inline-block;
min-width: 40%;
}
/* actions column -> anchor */
.settingsTable .a a
{
color: #095fb5;
}
/* name column */
.settingsTable .n
{
width: 270px;
}
/* Highlight results from filter*/
.settingsTable .highlighted {
font-weight: bold;
background-color: lightgoldenrodyellow;
}
/* value column */
.settingsTable .valueCell {
width: 300px;
margin: auto;
}
/* actual value */
.settingsTable .value {
width: 210px;
float: left;
}
/* icon div*/
.settingsTable .copyValue {
float: right;
}
.settingsTable .masked {
display: none;
}
/* icon */
.settingsTable .copyToClipboardIcon {
height: 15px;
width: 15px;
background-image: url("/UnsecureContent/images/Logo/clipboard.svg");
background-size: 15px 15px;
background-repeat: no-repeat;
background-position: center center;
float: left;
margin-left: 15px;
}
/* secret value */
.settingsTable .secret
{
color: red;
}
/* show masked value button*/
.settingsTable .ui-button .ui-button-text
{
line-height: 0.5;
font-size: 10px;
}
/* connection string */
.settingsTable .cs
{
width: 400px;
}
/* comment column */
.settingsTable .c {
width: 280px;
}
/* group column in connection strings */
.settingsTable .g {
width: 300px;
}
/* group column trimmed */
.settingsTable .gt {
width: 200px;
}
/* type column */
.settingsTable .t {
width: 110px;
}
.settingsTable td,
.settingsTable th {
border: 1px solid #999999;
}
.settingsTable td {
padding: 4px;
}
.settingsTable th {
padding: 5px 4px;
color: black;
}
.settingsTable tr:hover {
background-color: #DDDDDD
}
.configDialog {
display: none;
}
.configDialog input[type=text] {
width: 400px;
}
.configDialog .hiddenRow {
display: none;
}
#settingsDialog .timeSpan input[type=text] {
width: 70px;
margin-right: 2px;
}
#settingsDialog .guid #guidInput1 {
width: 75px;
margin-right: 2px;
}
#settingsDialog .guid #guidInput2,
#settingsDialog .guid #guidInput3,
#settingsDialog .guid #guidInput4 {
width: 50px;
margin-right: 2px;
}
#settingsDialog .guid #guidInput5 {
width: 110px;
margin-right: 2px;
}
#settingsDialog .hide {
display: none;
}
#settingsDialog table {
margin: 0 auto;
}
#settingsDialog input[type=text] {
margin-bottom: 3px;
}
/* Styles for validation helpers
-----------------------------------------------------------*/
.field-validation-error
{
color: #ff0000;
}
.field-validation-valid
{
display: none;
}
.input-validation-error
{
border: 1px solid #ff0000 !important;
background-color: #ffeeee;
}
.validation-summary-errors
{
font-weight: bold;
color: #ff0000;
}
.validation-summary-valid
{
display: none;
}
/** styles for services config pages begin ***/
.authorization-column span,
.authorization-column a {
width: 50px;
display: inline-block;
text-align: center;
}
.authorization-column span.selected {
font-weight: bold;
background-color: #EDEDED;
border-radius: 4px;
}
/** styles for services config pages end ***/
/*** client settings beging ***/
#client-settings label {
display: block;
}
#client-settings .add-top-margin {
margin-top: 20px;
}
#client-settings #status-message {
margin-left: 5px;
}
#client-settings input#setting-key {
width: 602px;
margin-bottom: 10px;
display: block;
}
#client-settings textarea {
width: 600px;
height: 350px;
margin-bottom: 10px;
display: block;
margin-top: 2px;
}
#client-settings table {
border-spacing: 0;
}
#client-settings table td {
padding: 0;
vertical-align: top;
}
/*** client settings end ***/
/*** regex start ***/
a.edit-regex-link {
margin-right: 10px;
}
.contentFilter {
float: left;
margin: 20px 20px 20px 0;
max-width: 50%;
}
.margin-bottom {
margin-bottom: 5px;
}
/*** regex ends ***/
#duo_iframe {
border: none;
width: 100%;
/* ReSharper disable CssBrowserCompatibility */
min-width: 304px;
/* ReSharper restore CssBrowserCompatibility */
max-width: 620px;
height: 330px;
display: block;
margin-top: 50px;
margin: 50px auto 0 auto;
}
#duo_form {
display: none;
}

View File

@ -0,0 +1,47 @@
.game-template {
width: 150px;
float: left;
margin-right: 10px;
}
.game-template a {
width: 150px;
height: 150px;
display: block;
position: relative;
}
.game-template img {
width: 150px;
height: 150px;
position: absolute;
z-index: -1;
}
.game-template .templateName {
font-size: 13px;
font-weight: bold;
text-align: center;
}
.game-template .removeTemplate {
float: right;
}
.game-template.template {
display: none;
}
#gameTemplatesList {
float: left;
width: 100%;
}
.error-message {
color: red;
font-weight: bold;
font-size: 13px;
padding-bottom: 10px;
}

View File

@ -0,0 +1,46 @@
.GenericForm .label {
font-weight: bold;
display: block;
position: absolute;
left: 0px;
color: black;
}
.GenericForm .row {
margin-bottom: 5px;
position: relative;
padding-left: 160px;
}
.GenericForm textarea {
width: 300px;
height: 100px;
}
.GenericForm .section {
padding: 20px 0px;
}
.GenericForm .TopError
{
border: 1px solid red;
padding: 2px;
text-align: center;
background: white;
color: darkRed;
margin: 5px;
}
.makeLimitedBtn
{
border: 1px solid #CCC;
padding: 2px;
background: white;
display: inline;
}
.makeLimitedBtn:hover {
text-decoration: none;
background: #eee;
cursor: pointer;
}
.ImageDiv img {
border: 1px solid #ccc;
background: #fff;
margin: 10px;
}

View File

@ -0,0 +1,10 @@
.inputLabel
{
float: left;
width: 100px;
padding-top: 5px;
}
.MouseOver
{
background-color: yellow;
}

93
Admi/CSS/Merchants.css Normal file
View File

@ -0,0 +1,93 @@
fieldset.AddMerchantBox {
width:740px;
margin: 10px 0px;
}
button#AddMerchantButton {
width:80px;float:right;
}
input.merchantActiveInput {
padding:20px;
}
div#ErrorDiv {
color: red;
margin: 10px 0px;
display:none;
}
div#SuccessDiv {
color: green;
margin: 10px 0px;
display:none;
}
fieldset#MerchantList {
width:740px;
}
table#tableTemplate {
display: none;
}
tr#trTemplate {
display:none;
}
td.MerchID {
width: 50px;
}
td.MerchName {
width: 210px;
}
td.MerchActive {
width: 50px;
text-align:center;
}
td.MerchCreated {
width: 210px;
}
td.MerchUpdated {
width: 210px;
}
td.merch-hidden {
width:50px;
text-align: center;
}
td.MerchCountry {
width: 210px;
}
td.MerchLocator {
width: 210px;
}
td.MerchImage {
width: 210px;
}
td.MerchEdit {
width: 50px;
text-align: center;
}
div#pager {
margin-left:auto;
margin-right:auto;
margin-top:15px;
height: 23px;
text-align: center;
display: none;
padding: 3px 3px 3px 3px;
}
div#NoMerchantDisplays {
margin-top:100px;
}

1
Admi/CSS/Messages/default.min.css vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1 @@
html,body,p,code:before,table{margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;font-size:13px;color:#111}html{height:100%;overflow:auto;-webkit-overflow-scrolling:touch}body{overflow:auto;-webkit-overflow-scrolling:touch;min-height:100%;word-wrap:break-word}ul,ol{margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0}table,td{border:1px dotted #000;empty-cells:show}code:before{position:absolute;content:'Code:';top:-1.35em;left:0}code{margin-top:1.5em;position:relative;background:#eee;border:1px solid #aaa;white-space:pre;padding:.25em}.ie6 code,.ie7 code{margin-top:0}code:before,code{display:block;text-align:left}blockquote{position:relative;background:#fff6c7;margin:.25em 0;border:1px solid #aaa;padding:.25em}blockquote cite{font-weight:bold;display:block;font-size:1em;border-bottom:1px solid #aaa}div{min-height:1em}h1,h2,h3,h4,h5,h6{padding:0;margin:0}

56
Admi/CSS/Partners/Get.css Normal file
View File

@ -0,0 +1,56 @@
.menu {
margin-bottom: 20px;
}
.menuitem {
margin-right: 50px;
}
.pixelType {
font-weight: bold;
font-size: 14px;
}
.deletePixel {
font-weight: normal;
}
.active-field {
font-weight: normal;
font-size: 12px;
}
textarea {
margin-bottom: 30px;
}
.notes {
color: red;
}
.messages {
margin-bottom: 15px;
}
table {
margin: 20px;
}
table, tr, td {
border: 1px solid;
text-align: center;
}
#NameCell {
width: 250px;
font-weight: bold;
}
#SuppressedCell {
font-weight: bold;
width: 75px;
}
fieldset {
margin-bottom: 30px;
}

View File

@ -0,0 +1,22 @@
table {
margin: 20px;
}
input[type='submit'] {
margin-top: 15px;
}
table, tr, td {
border: 1px solid;
text-align: center;
}
#NameCell {
width: 250px;
font-weight: bold;
}
#ActiveCell {
font-weight: bold;
width: 75px;
}

148
Admi/CSS/ProductPrices.css Normal file
View File

@ -0,0 +1,148 @@
.StandardDividerBottom {
margin-bottom: 15px;
padding-bottom: 10px;
}
.form-create-price label {
width: 150px;
text-align: right;
margin-right: 10px;
display: inline-block;
}
.form-create-price .input-group {
margin-bottom: 2px;
}
.tableheader {
font-weight: bold;
margin-bottom: 2px;
padding-bottom: 2px;
height: 1em;
display: table-header-group;
}
.tableheader div {
display: table-cell;
margin-right: 2px;
padding: 2px 2px;
}
.table-row {
display: table-row-group;
}
.table-row .display-row {
height: 26px;
line-height: 26px;
}
.table-row .display-row,
.table-row .edit-row {
display: table-row;
}
.table-row div {
margin-right: 2px;
padding: 1px 2px;
}
.table-row .edit-row .input-group select,
.table-row .edit-row .input-group input {
width: inherit;
}
.table-row div {
display: table-cell;
}
.table-row div [name='price'] {
width: 150px;
padding: 1px 0px;
}
.table-row div [name='edit'],
.table-row div [name='delete'],
.table-row div [name='submit'],
.table-row div [name='cancel'] {
text-align: center;
width: 50px;
}
.table-row div a {
color: #333333;
text-align: center;
width: 50px;
}
.table-row div a:hover {
cursor: pointer;
}
.table-grid {
display: table;
width: 100%;
}
#update-product-prices-panel {
margin: 10px;
}
.error-message {
display: block;
background-color: #FFBABA;
color: #D8000C;
margin: 10px;
padding: 5px;
border: #D8000C solid 1px;
}
.error-message .icon {
font-size: 20px;
display: table-cell;
vertical-align: middle;
padding: 10px;
}
.error-message .error-text {
display: table-cell;
vertical-align: middle;
}
.scrollable-menu {
height: auto;
max-height: 400px;
overflow-x: hidden;
}
.form-control.dropdown,
.form-control.text {
display: inline-block;
max-width: 300px
}
.form-control.dropdown {
margin-left: 4px;
}
.form-create-price .form-group {
margin-bottom: 5px;
}
.product-sheet.container {
padding-top: 15px;
max-width: none;
}
.product-sheet-submit {
margin: 10px 0;
}
.handsontable table thead th {
white-space: pre-line;
}
table.htCore tbody tr:nth-child(even) td {
background-color: #f9f9f9;
}

View File

@ -0,0 +1,58 @@
.Name {
width: 200px;
}
.Status
{
width: 100px;
}
.Index.StandardDividerBottom {
margin-top: 3px;
margin-bottom: 10px;
width: 100%;
}
.GenericForm .label {
font-weight: bold;
display: block;
position: absolute;
left: 0px;
}
.GenericForm .row {
margin-bottom: 5px;
position: relative;
padding-left: 160px;
}
.GenericForm textarea {
width: 300px;
height: 100px;
}
.item-name {
width: 200px;
display: block;
float: left;
}
.item-order {
width: 70px;
}
.item-order input {
width: 50px;
}
.item-row {
clear: both;
}
input.item-order-submit {
position: relative;
}
.note {
font-size: 11px;
margin-bottom: 10px;
}
.GenericForm {
width: 600px;
}
.StandardDividerTop {
padding-top: 5px;
}
input.long {
width: 300px;
}

35
Admi/CSS/Takeover.css Normal file
View File

@ -0,0 +1,35 @@
#MarketingConfigOptions .selected {
font-weight: bold;
}
#MarketingConfigOptions span:hover {
cursor: pointer;
}
.country-option {
float: left;
width: 33%;
}
.age-textbox {
width: 50px;
}
.generic-form {
width: 600px;
}
.generic-form .label {
font-weight: bold;
display: block;
position: absolute;
left: 0px;
}
.generic-form .row {
margin-bottom: 5px;
position: relative;
padding-left: 160px;
}
.takeover-message {
background-color: #9BC4E2;
border: 2px inset #0D4F8B;
padding: 5px;
margin-bottom: 5px;
display: block;
text-align: center;
}

View File

@ -0,0 +1,448 @@
<?php
include_once $_SERVER["DOCUMENT_ROOT"] . '/global.php';
$user = new PublicUser();
if ($user == false) {
die(Redirect("http://" . $_SERVER['SERVER_NAME'] . "/RobloxDefaultErrorPage.aspx"));
}
//checks if user is admin
$badges = json_decode($user->Badges, true);
//if (verify_user() !== true and $user->Name == "dreamer") {die("dreamer moment");}
if (verify_user() !== true or in_array(1, $badges["Badges"]) !== true/*$user->MembershipLevel < 3*/) {
die(Redirect("http://" . $_SERVER['SERVER_NAME'] . "/RobloxDefaultErrorPage.aspx?code=403"));
}
//moved up here since this involves header changes
if (isset($_POST['upload'])) {
$uploadOK = false;
$type = $_POST['type'];
$forsale = $_POST['forsale'];
if ($forsale == true) {
$forsale = 1;}else{
$forsale = 0;}
$currency = $_POST['currency'];
if ($type !== 4) {
$price = $_POST['price'];
}
$description = $_POST['description'];
$title = $_POST['title'];
//check here if user is admin
$dbtype = $type;
$title = preg_replace("/[^ \w]+/", "", $title);
$title = preg_replace('!\s+!', ' ', $title);
$description = preg_replace('!\s+!', ' ', $description);
if (strlen($title) > 36) {
header("Location: /Admi/Economy/NewProduct.aspx?error=2");
exit;
}
if (strlen($title) < 1) {
header("Location: /Admi/Economy/NewProduct.aspx?error=5");
exit;
}
if (strlen($description) > 800) {
header("Location: /Admi/Economy/NewProduct.aspx?error=1");
exit;
}
if ($price < 0 and $dbtype !== 13) {
header("Location: /Admi/Economy/NewProduct.aspx?error=4");
exit;
}
if ($price > 99999 and $dbtype !== 13) {
header("Location: /Admi/Economy/NewProduct.aspx?error=3");
exit;
}
if ($dbtype == 13) {
$price = 0;
}
}
function newAssetId() {
global $database;
//$query = "SELECT * FROM asset WHERE AssetTypeId=".$dbtype." ORDER BY AssetId DESC LIMIT 1;";
$query = "SELECT * FROM asset ORDER BY AssetId DESC LIMIT 1;";
$execute = $database->query($query);
if ($execute !== false) {
//$final = $execute->fetchAll();
$result = $execute->fetch(PDO::FETCH_ASSOC);
//die(print_r($result));
}else {
return false;
}
if (!is_array($result)) {
$assetId = 1;
}else{
$assetId = $result['AssetId']+1;
while (file_exists($_SERVER["DOCUMENT_ROOT"].'/Asset/'.$assetId)) {
$assetId = $assetId+1;
}
}
return $assetId;
}
?>
<!DOCTYPE html>
<html lang="en">
<head id="ctl00_Head1">
<meta http-equiv="X-UA-Compatible" content="IE=edge,requiresActiveX=true"/><title>
Upload - ROBLONIUM
</title>
<link rel="icon" type="image/vnd.microsoft.icon" href="/favicon.ico"/><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><meta http-equiv="Content-Language" content="en-us"/>
<?php include $_SERVER["DOCUMENT_ROOT"] . "/puzzle/ScriptGlobals.php";?>
<style>
input[type=text], select, input[type=password],input[type=email],input[type=number],textarea {
width: 100%;
padding: 5px 15px;
margin: 8px 0;
display: inline-block;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
input[type=submit] {
width: 100%;
background-color: #4CAF50;
color: white;
padding: 15px 25px;
margin: 8px 0;
border: none;
border-radius: 4px;
cursor: pointer;
}
input[type=submit]:hover {
background-color: #45a049;
}
</style>
</head>
<body>
<div id="MasterContainer">
<script type="text/javascript">
$(function(){
function trackReturns() {
function dayDiff(d1, d2) {
return Math.floor((d1-d2)/86400000);
}
var cookieName = 'RBXReturn';
var cookieOptions = {expires:9001};
var cookie = $.getJSONCookie(cookieName);
if (typeof cookie.ts === "undefined" || isNaN(new Date(cookie.ts))) {
$.setJSONCookie(cookieName, { ts: new Date().toDateString() }, cookieOptions);
return;
}
var daysSinceFirstVisit = dayDiff(new Date(), new Date(cookie.ts));
if (daysSinceFirstVisit == 1 && typeof cookie.odr === "undefined") {
RobloxEventManager.triggerEvent('rbx_evt_odr', {});
cookie.odr = 1;
}
if (daysSinceFirstVisit >= 1 && daysSinceFirstVisit <= 7 && typeof cookie.sdr === "undefined") {
RobloxEventManager.triggerEvent('rbx_evt_sdr', {});
cookie.sdr = 1;
}
$.setJSONCookie(cookieName, cookie, cookieOptions);
}
RobloxListener.restUrl = window.location.protocol + "//" + "<?=$_SERVER['SERVER_NAME']?>/Game/EventTracker.ashx";
RobloxListener.init();
GoogleListener.init();
RobloxEventManager.initialize(true);
RobloxEventManager.triggerEvent('rbx_evt_pageview');
trackReturns();
RobloxEventManager._idleInterval = 450000;
RobloxEventManager.registerCookieStoreEvent('rbx_evt_initial_install_start');
RobloxEventManager.registerCookieStoreEvent('rbx_evt_ftp');
RobloxEventManager.registerCookieStoreEvent('rbx_evt_initial_install_success');
RobloxEventManager.registerCookieStoreEvent('rbx_evt_fmp');
RobloxEventManager.startMonitor();
});
</script>
<script type="text/javascript">Roblox.FixedUI.gutterAdsEnabled=false;</script>
<?php include $_SERVER["DOCUMENT_ROOT"] . '/Banner' ;?>
<noscript><div class="SystemAlert"><div class="SystemAlertText">Please enable Javascript to use all the features on this site.</div></div></noscript>
<?php
if (isset($_GET['error'])) {
$id = $_GET['error'];
if ($id == 1) {
echo alert('Your description is too long!', '#dada01');
}elseif($id == 2) {
echo alert('Your asset name is too long!', '#dada01');
}elseif($id == 3) {
echo alert('Your asset price cannot be higher than <span class="robux money">99999</span>.', '#dada01');
}elseif($id == 4) {
echo alert('Your asset price cannot be lower than <span class="robux money">0</span>.', '#dada01');
}elseif($id == 5) {
echo alert('Your asset name must be at least 1 character in length.', '#dada01');
}elseif($id == 6) {
echo alert('Illegal character has been detected!', 'red');
}
}
?>
<div id="BodyWrapper">
<div id="RepositionBody">
<div id="Body" style="width:970px; padding: 5px 0 80px 0;">
<div class="row">
<div class="col-xs-8">
<div class="divider-right" style="width: 484px; float: left; padding-left: 0.2in;">
<h2 class="title">
<span>Upload</span>
</h2>
<div class="panel-body">
<form method="post" enctype="multipart/form-data">
Name:<br>
<input type="text" name="title" maxlength="36" class="form-control" style="width:3in;">
<br>
Description:<br>
<textarea name="description" maxlength="800" class="form-control" rows="10" style="width:3in;"></textarea>
<br>
Price: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For Sale
<br>
<input type="number" name="price" maxlength="5" class="form-control" style="width:2.7in;"><input type="checkbox" name="forsale" class="form-control" style="width:0.2in;">
<br>
Currency:
<br>
<input type="radio" name="currency" value="1" class="form-control" style="width:0.2in;">
<span class="robux money">Robux</span>
<input type="radio" name="currency" value="2" class="form-control" style="width:0.2in;">
<span class="tickets money">Tix</span>
<br>
Type:<br>
<select name="type" style="width:3in;">
<?php
if($user->Id == 1) {echo(' <option value="0">Product</option>
<option value="1">Image</option>
<option value="2">T-Shirt</option>
<option value="3">Audio</option>
<option value="4">Mesh</option>
<option value="5">Lua</option>
<option value="6">HTML</option>
<option value="7">Text</option>
<option value="8">Hat</option>
<option value="9">Place</option>
<option value="10">Model</option>
<option value="11">Shirt</option>
<option value="12">Pants</option>
<option value="13">Decal</option>
<option value="16">Avatar</option>
<option value="17">Head</option>
<option value="18">Face</option>
<option value="19">Gear</option>
<option value="21">Badge</option>
<option value="22">Group Emblem</option>
<option value="24">Animation</option>
<option value="25">Arms</option>
<option value="26">Legs</option>
<option value="27">Torso</option>
<option value="28">Right Arm</option>
<option value="29">Left Arm</option>
<option value="42">Left Leg</option>
<option value="31">Right Leg</option>
<option value="32">Package</option>
<option value="33">YouTube Video</option>
<option value="34">Game Pass</option>');
}else{echo(' <option value="1">Image</option>
<option value="2">T-Shirt</option>
<option value="3">Audio</option>
<!--option value="4">Mesh</option-->
<option value="8">Hat</option>
<option value="10">Model</option>
<option value="11">Shirt</option>
<option value="12">Pants</option>
<option value="13">Decal</option>
<option value="18">Face</option>
<option value="19">Gear</option>
<option value="24">Animation</option>');
}
?>
</select>
<br>
<p style="display:inline;">
File:<br>
<input style="display:inline;" type="file" name="file">
</p>
<br><br>
<button type="submit" name="upload" name="upload" class="btn-medium btn-primary btn-level-element " style="padding: 4px 13px 1px 13px; height: 33px;">Upload<span class="btn-text">Upload</span></button>
</form>
</div>
</div>
<div class="divider-left" style="width: 420px; float: right; align-self: center; border-left: 0px; padding-right: 0.2in;">
<h2 class="title" style="margin-bottom: 0px;">
<span>Uploading Info</span>
</h2>
<pre class="Description body text">This is where you can upload assets such as T-Shirts, Decals, and Pants. Uploading an asset costs <span class="robux money">20</span>. You'll need to wait for your asset to be approved before you can use it. If a moderator decides that your asset is against our terms of service, they have every right to delete your asset without compensation.</pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<?php
if (isset($_POST['upload'])) {
//moved up to prevent headers from being prematurely sent
$assetId = newAssetId();
if ($assetId !== false) {
$target_dir = $_SERVER["DOCUMENT_ROOT"]."/assets/";
$target_file = $target_dir.$assetId;
$check = @getimagesize($_FILES["file"]["tmp_name"]);
list($width, $height) = @getimagesize($_FILES["file"]["tmp_name"]);
/*if ($auth_uid == 11) {
echo '<script>alert("'.$width.'");</script>';
echo '<script>alert("'.$height.'");</script>';
}*/
if ($width != 580 and $height != 556) {
if ($dbtype == 11 or $dbtype == 12) {
$uploadOK = false;
}
}
$uploadOK = true;
if ($check == false and ($dbtype == 11 or $dbtype == 12 or $dbtype == 13 or $dbtype == 2 or $dbtype == 1)) {
echo('<br>' . alert('The file you tried to upload is not an image.', '#dada01') . '<br>');
$uploadOK = false;
}else{
/*if ($dbtype !== 11 and $dbtype !== 12 and $dbtype !== 13 and $dbtype !== 2 and $dbtype !== 1) {
$xml=simplexml_load_string(file_get_contents($target_file));
if ($xml === false) {
echo('<br>' . alert("The asset you tried to upload isn't in XML format. (It's too new)", '#dada01') . '<br>');
$uploadOK = false;
}
}*/
$imageFileType = pathinfo($_FILES['file']["name"], PATHINFO_EXTENSION);
if ($_FILES["file"]["size"] > 30000000) {
echo('<br>' . alert('The file you tried to upload is greater than 30 MB.', '#dada01') . '<br>');
$uploadOK = false;
}else{
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $_FILES['file']['tmp_name']);
if (($dbtype == 11 or $dbtype == 12 or $dbtype == 13 or $dbtype == 2 or $dbtype == 1) && $imageFileType != "jpg" && $imageFileType != "JPG" && $imageFileType != "png" && $imageFileType != "PNG" && $imageFileType != "jpeg" && $imageFileType != "JPEG" && $mime != "image/png" && $mime != "image/jpeg") {
//echo 'The file you tried to upload is not allowed. Only JPG, JPEG and PNG are allowed.';
echo('<br>' . alert('The file you tried to upload is not allowed.', '#dada01') . '<br>');
$uploadOK = false;
}else{
if ($user->Robux < 0) {
echo('<br>' . alert('You do not have enough ROBUX. :(', '#dada01') . '<br>');
}else{
if ($uploadOK == true) {
if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
//$user->Robux = $user->Robux-20;
$userinfo = $database->updateRow("public_users", [ // update code in secondary database
"Robux" => $user->Robux
], ["Id" => $user->Id]);
if (isset($imageReliantAssetTypes[$dbtype])) {
$database->insertRow("asset", [ // upload secondary asset
"Name" => $title,
"Description" => assetTypeToString($dbtype)." Image",
"PriceInRobux" => 0,
"PriceInTickets" => 0,
"IsForSale" => 0,
"AssetTypeId" => 1,
"CreatorId" => $user->Id,
"AssetId" => $assetId,
], "AssetId");
giveItem($user->Id, $assetId); //give the owner the texture
//the texture has been uploaded now to upload the user's requested asset...
//handle the asset that the user was trying to upload rather than the texture
$processedAsset = processAsset($dbtype, array('http://sitetest1.roblonium.com/asset/?id='.$assetId)); //append the proper text to the asset
$assetId = newAssetId(); //generate a new asset id
$target_file = $target_dir.$assetId; //generate a new target file for the requested asset
if ($processedAsset !== false) {
file_put_contents($target_file, $processedAsset); //upload the user's requested asset
}
}
if ($currency == 2) {
$newasset = $database->insertRow("asset", [ // upload asset with Tickets currency
"Name" => $title,
"Description" => $description,
"PriceInRobux" => 0,
"PriceInTickets" => $price,
"IsForSale" => $forsale,
"AssetTypeId" => $dbtype,
"CreatorId" => $user->Id,
"AssetId" => $assetId,
], "AssetId");
}else {
$newasset = $database->insertRow("asset", [ // upload asset with Robux currency
"Name" => $title,
"Description" => $description,
"PriceInRobux" => $price,
"PriceInTickets" => 0,
"IsForSale" => $forsale,
"AssetTypeId" => $dbtype,
"CreatorId" => $user->Id,
"AssetId" => $assetId,
], "AssetId");
}
echo('<br>' . alert('Asset successfully uploaded!', 'green') . '<br>');
/*//ping thumbnail to start rendering
file_get_contents('http://'.$_SERVER['SERVER_NAME'].'/Game/Tools/ThumbnailAsset.ashx?aid='.$assetId.'&fmt=png&wd=320&ht=320');
*/
giveItem($user->Id, $assetId);
echo(' <script type="text/javascript">
window.parent.location = "/Item.aspx?id='.$assetId.'";
</script>');
}else{
if ($_FILES['file']['error'] == 1) {
echo('<br>' . alert('[The uploaded file size exceeds the file size limit.]', 'red') . '<br>');
} else{
echo('<br>' . alert('An error occurred while uploading. Please try again soon! ['.$_FILES['file']['error'].']', 'red') . '<br>');
}
}
}else{
echo('<br>' . alert('Could not upload your file. Are you using the correct template?', '#dada01') . '<br>');
}
}
}
}
}
}else{
echo('<br>' . alert('Critical Error!', 'red') . '<br>');
}
}else{
echo('<br>' . alert('Fill in the fields above and press upload to upload an asset.', 'black') . '<br>');
}
?>
<?php include $_SERVER["DOCUMENT_ROOT"] . "/Footer";?>
</div>
<?php include $_SERVER["DOCUMENT_ROOT"] . "/puzzle/Post-Footer.php";?>
</body>
</html>

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url><<<<<Domain>>>>>/asset/?id=<<<<<ImageAssetID>>>>></url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

View File

@ -0,0 +1,99 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Tool" referent="RBX0">
<Properties>
<bool name="Enabled">true</bool>
<CoordinateFrame name="Grip">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
<R00>0</R00>
<R01>0</R01>
<R02>1</R02>
<R10>0</R10>
<R11>1</R11>
<R12>-0</R12>
<R20>-1</R20>
<R21>0</R21>
<R22>0</R22>
</CoordinateFrame>
<string name="Name"><<<<<Name>>>>></string>
<Content name="TextureId"><url><<<<<ToolboxIconURL>>>>></url></Content>
<bool name="archivable">true</bool>
</Properties>
<Item class="Part" referent="RBX2">
<Properties>
<bool name="Anchored">false</bool>
<float name="BackParamA">-0.5</float>
<float name="BackParamB">0.5</float>
<token name="BackSurface">0</token>
<token name="BackSurfaceInput">0</token>
<float name="BottomParamA">-0.5</float>
<float name="BottomParamB">0.5</float>
<token name="BottomSurface">0</token>
<token name="BottomSurfaceInput">0</token>
<int name="BrickColor">199</int>
<CoordinateFrame name="CFrame">
<X>33</X>
<Y>3</Y>
<Z>0.5</Z>
<R00>0</R00>
<R01>0</R01>
<R02>-1</R02>
<R10>0</R10>
<R11>1</R11>
<R12>-0</R12>
<R20>1</R20>
<R21>0</R21>
<R22>-0</R22>
</CoordinateFrame>
<bool name="CanCollide">true</bool>
<bool name="DraggingV1">false</bool>
<float name="Elasticity">0.5</float>
<token name="FormFactor">2</token>
<float name="Friction">0.300000012</float>
<float name="FrontParamA">-0.5</float>
<float name="FrontParamB">0.5</float>
<token name="FrontSurface">0</token>
<token name="FrontSurfaceInput">0</token>
<float name="LeftParamA">-0.5</float>
<float name="LeftParamB">0.5</float>
<token name="LeftSurface">0</token>
<token name="LeftSurfaceInput">0</token>
<bool name="Locked">true</bool>
<token name="Material">256</token>
<string name="Name">Handle</string>
<float name="Reflectance">0</float>
<float name="RightParamA">-0.5</float>
<float name="RightParamB">0.5</float>
<token name="RightSurface">0</token>
<token name="RightSurfaceInput">0</token>
<Vector3 name="RotVelocity">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</Vector3>
<float name="TopParamA">-0.5</float>
<float name="TopParamB">0.5</float>
<token name="TopSurface">0</token>
<token name="TopSurfaceInput">0</token>
<float name="Transparency">0</float>
<Vector3 name="Velocity">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</Vector3>
<bool name="archivable">true</bool>
<token name="shape">1</token>
<Vector3 name="size">
<X>1</X>
<Y>2</Y>
<Z>2</Z>
</Vector3>
</Properties>
<<<<<Meshes>>>>>
<<<<<Sounds>>>>>
</Item>
</Item>
</roblox>

View File

@ -0,0 +1,96 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Hat" referent="RBX0">
<Properties>
<CoordinateFrame name="AttachmentPoint">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
<R00>1</R00>
<R01>0</R01>
<R02>-0</R02>
<R10>-0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>0</R20>
<R21>-0</R21>
<R22>1</R22>
</CoordinateFrame>
<string name="Name"><<<<<Name>>>>></string>
<bool name="archivable">true</bool>
</Properties>
<Item class="Part" referent="RBX1">
<Properties>
<bool name="Anchored">false</bool>
<float name="BackParamA">-0.5</float>
<float name="BackParamB">0.5</float>
<token name="BackSurface">0</token>
<token name="BackSurfaceInput">0</token>
<float name="BottomParamA">-0.5</float>
<float name="BottomParamB">0.5</float>
<token name="BottomSurface">0</token>
<token name="BottomSurfaceInput">0</token>
<int name="BrickColor">194</int>
<CoordinateFrame name="CFrame">
<X>-43.993679</X>
<Y>3.99712181</Y>
<Z>-8.58395958</Z>
<R00>0.999751627</R00>
<R01>-5.25372174e-021</R01>
<R02>-0.0222777594</R02>
<R10>5.26573444e-021</R10>
<R11>1</R11>
<R12>4.80515498e-022</R12>
<R20>0.0222777594</R20>
<R21>-5.97705948e-022</R21>
<R22>0.999751627</R22>
</CoordinateFrame>
<bool name="CanCollide">true</bool>
<bool name="DraggingV1">false</bool>
<float name="Elasticity">0.5</float>
<token name="FormFactor">2</token>
<float name="Friction">0.300000012</float>
<float name="FrontParamA">-0.5</float>
<float name="FrontParamB">0.5</float>
<token name="FrontSurface">0</token>
<token name="FrontSurfaceInput">0</token>
<float name="LeftParamA">-0.5</float>
<float name="LeftParamB">0.5</float>
<token name="LeftSurface">0</token>
<token name="LeftSurfaceInput">0</token>
<bool name="Locked">true</bool>
<token name="Material">256</token>
<string name="Name">Handle</string>
<float name="Reflectance">0</float>
<float name="RightParamA">-0.5</float>
<float name="RightParamB">0.5</float>
<token name="RightSurface">0</token>
<token name="RightSurfaceInput">0</token>
<Vector3 name="RotVelocity">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</Vector3>
<float name="TopParamA">-0.5</float>
<float name="TopParamB">0.5</float>
<token name="TopSurface">0</token>
<token name="TopSurfaceInput">0</token>
<float name="Transparency">0</float>
<Vector3 name="Velocity">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</Vector3>
<bool name="archivable">true</bool>
<token name="shape">1</token>
<Vector3 name="size">
<X>2</X>
<Y>0.800000012</Y>
<Z>2</Z>
</Vector3>
</Properties>
<<<<<Meshes>>>>>
</Item>
</Item>
</roblox>

View File

@ -0,0 +1,26 @@
<Item class="SpecialMesh" referent="RBX2">
<Properties>
<token name="LODX">2</token>
<token name="LODY">2</token>
<Content name="MeshId"><url><<<<<Domain>>>>>/asset/?id=<<<<<MeshAssetID>>>>></url></Content>
<token name="MeshType">5</token>
<string name="Name">Mesh</string>
<Vector3 name="Offset">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</Vector3>
<Vector3 name="Scale">
<X>1</X>
<Y>1</Y>
<Z>1</Z>
</Vector3>
<Content name="TextureId"><url><<<<<TextureAssetURL>>>>></url></Content>
<Vector3 name="VertexColor">
<X>1</X>
<Y>1</Y>
<Z>1</Z>
</Vector3>
<bool name="archivable">true</bool>
</Properties>
</Item>

View File

@ -0,0 +1,12 @@
<Item class="Sound" referent="RBX0">
<Properties>
<bool name="Looped">false</bool>
<string name="Name"><<<<<Name>>>>></string>
<float name="Pitch">1</float>
<int name="PlayCount">-1</int>
<bool name="PlayOnRemove">false</bool>
<Content name="SoundId"><url><<<<<Domain>>>>>/asset/?id=<<<<<SoundAssetID>>>>></url></Content>
<float name="Volume">1</float>
<bool name="archivable">true</bool>
</Properties>
</Item>

View File

@ -0,0 +1,114 @@
using System;
using System.Collections.Generic;
using Roblox;
using Roblox.Caching;
using Roblox.Common;
using Roblox.Data.Interfaces;
namespace <NAMESPACE>
{
internal class <BIZCLASSNAME> : IRobloxEntity<<IDTYPE>, <CLASSNAME>> <BIZREMOTECACHEABLE>
{
private <CLASSNAME> _EntityDAL;
public <IDTYPE> ID
{
get { return _EntityDAL.ID; }
}
<BIZPROPERTIES>
public <BIZCLASSNAME>()
{
_EntityDAL = new <CLASSNAME>();
}
internal void Delete()
{
EntityHelper.DeleteEntity(
this,
_EntityDAL.Delete
);
}
internal void Save()
{
EntityHelper.SaveEntity(
this,
() =>
{
_EntityDAL.Created = DateTime.Now;
_EntityDAL.Updated = _EntityDAL.Created;
_EntityDAL.Insert();
},
() =>
{
_EntityDAL.Updated = DateTime.Now;
_EntityDAL.Update();
}
);
}
private static <BIZCLASSNAME> CreateNew(<CREATENEWPARAMS>)
{
var entity = new <BIZCLASSNAME>();
<CREATENEWPROPERTYSETTERS>
entity.Save();
return entity;
}
internal static <BIZCLASSNAME> Get(<IDTYPE> id)
{
return EntityHelper.GetEntity<<IDTYPE>, <CLASSNAME>, <BIZCLASSNAME>>(
EntityCacheInfo,
id,
() => <CLASSNAME>.Get(id)
);
}
#$@#@ - Unique ID used to find this section, don't change it. 599W#%2
internal static ICollection<<BIZCLASSNAME>> Get<BIZCLASSNAME>sBy<FKPROPERTYNAME>(<FKIDTYPE> <FKPROPERTYNAME>)
{
string collectionId = string.Format("Get<BIZCLASSNAME>sBy<FKPROPERTYNAME>_<FKPROPERTYNAME>:{0}", <FKPROPERTYNAME>);
return EntityHelper.GetEntityCollection<<BIZCLASSNAME>, <IDTYPE>>(
EntityCacheInfo,
new CacheManager.CachePolicy(
CacheManager.CacheScopeFilter.Qualified,
string.Format("<FKPROPERTYNAME>:{0}", <FKPROPERTYNAME>)
),
collectionId,
() => <BIZCLASSNAME>DAL.Get<BIZCLASSNAME>IDsBy<FKPROPERTYNAME>(<FKPROPERTYNAME>),
Get
);
}
#$@#@2 - Unique ID used to find this section, don't change it. 599W#%44
public void Construct(<CLASSNAME> dal)
{
_EntityDAL = dal;
}
public CacheInfo CacheInfo
{
get { return EntityCacheInfo; }
}
public static CacheInfo EntityCacheInfo = new CacheInfo(
new CacheabilitySettings(collectionsAreCacheable: true, countsAreCacheable: true, entityIsCacheable: true, idLookupsAreCacheable: true, hasUnqualifiedCollections: true),
typeof(<BIZCLASSNAME>).ToString(),
true
);
public IEnumerable<string> BuildEntityIDLookups()
{
yield break;
}
public IEnumerable<StateToken> BuildStateTokenCollection()
{
%^^^^yield return new StateToken(string.Format("<FKPROPERTYNAME>:{0}", <FKPROPERTYNAME>));^^^^%
yield break;
}
<BIZREMOTECACHEABLEREGION>
}
}

View File

@ -0,0 +1,133 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using Roblox.Common;
using Roblox.Common.Persistence;
namespace <NAMESPACE>
{
internal class <DALCLASSNAME>
{
private <IDTYPE> _ID = default(<IDTYPE>);
<DALFIELDS>
internal <IDTYPE> ID
{
get { return _ID; }
set { _ID = value; }
}
<DALPROPERTIES>
private static string <CONNECTIONSTRING>
{
get { return <CONNECTIONSTRINGVALUE>; }
}
internal <DALCLASSNAME>()
{
}
internal void Delete()
{
if (_ID == default(<IDTYPE>))
throw new ApplicationException("Required value not specified: ID.");
var queryParameters = new List<SqlParameter>
{
new SqlParameter("@ID", _ID)
};
var dbInfo = new dbInfo(
<CONNECTIONSTRING>,
"<DELETEPROCEDURE>",
queryParameters
);
EntityHelper.DoEntityDALDelete(dbInfo);
}
internal void Insert()
{
var queryParameters = new List<SqlParameter>
{
<QUERYPARAMETERS>
};
var dbInfo = new dbInfo(
<CONNECTIONSTRING>,
"<INSERTPROCEDURE>",
new SqlParameter("@ID", <IDSQLDBTYPE>),
queryParameters
);
_ID = EntityHelper.DoEntityDALInsert<<IDTYPE>>(dbInfo);
}
internal void Update()
{
var queryParameters = new List<SqlParameter>
{
new SqlParameter("@ID", _ID),
<QUERYPARAMETERS>
};
var dbInfo = new dbInfo(
<CONNECTIONSTRING>,
"<UPDATEPROCEDURE>",
queryParameters
);
EntityHelper.DoEntityDALUpdate(dbInfo);
}
private static <DALCLASSNAME> BuildDAL(SqlDataReader reader)
{
var dal = new <DALCLASSNAME>();
while (reader.Read())
{
dal.ID = (<IDTYPE>)reader["ID"];
<READERPARAMETERS>
}
if (dal.ID == default(<IDTYPE>))
return null;
return dal;
}
internal static <DALCLASSNAME> Get(<IDTYPE> id)
{
if (id == default(<IDTYPE>))
return null;
var queryParameters = new List<SqlParameter>
{
new SqlParameter("@ID", id)
};
var dbInfo = new dbInfo(
<CONNECTIONSTRING>,
"<GETPROCEDURE>",
queryParameters
);
return EntityHelper.GetEntityDAL(dbInfo, BuildDAL);
}
#$@#@ - Unique ID used to find this section, don't change it. 599W#%2
internal static ICollection<<IDTYPE>> Get<CLASSNAME>IDsBy<FKPROPERTYNAME>(<FKIDTYPE> <FKPROPERTYNAME>)
{
if (<FKPROPERTYNAME> == default(<FKIDTYPE>))
throw new ApplicationException("Required value not specified: <FKPROPERTYNAME>.");
var queryParameters = new List<SqlParameter>();
queryParameters.Add(new SqlParameter("@<FKPROPERTYNAME>", <FKPROPERTYNAME>));
return EntityHelper.GetDataEntityIDCollection<<IDTYPE>>(
new dbInfo(
<CONNECTIONSTRING>,
"<CLASSNAME>s_Get<CLASSNAME>IDsBy<FKPROPERTYNAME>",
queryParameters
)
);
}
#$@#@2 - Unique ID used to find this section, don't change it. 599W#%44
}
}

View File

@ -0,0 +1,169 @@
/* Standard Insertion */
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[<INSERTPROCEDURE>]') AND type in (N'P', N'PC'))
BEGIN
EXEC('CREATE PROCEDURE [dbo].[<INSERTPROCEDURE>] AS BEGIN SET NOCOUNT ON; END')
END
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[<INSERTPROCEDURE>]
(
@ID <SQLIDTYPE> OUTPUT
<SQLINPUTPARAMETERLIST>
)
AS
SET NOCOUNT ON
INSERT INTO
[<TABLENAME>]
(
<COLUMNLIST>
)
VALUES
(
<SQLPARAMETERLIST>
)
SET @ID = SCOPE_IDENTITY();
SET NOCOUNT OFF
RETURN
GO
/* Standard Update */
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[<UPDATEPROCEDURE>]') AND type in (N'P', N'PC'))
BEGIN
EXEC('CREATE PROCEDURE [dbo].[<UPDATEPROCEDURE>] AS BEGIN SET NOCOUNT ON; END')
END
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[<UPDATEPROCEDURE>]
(
@ID <SQLIDTYPE>
<SQLINPUTPARAMETERLIST>
)
AS
SET NOCOUNT ON
UPDATE
[<TABLENAME>]
SET
<SETVALUES>
WHERE
([ID] = @ID)
SET NOCOUNT OFF
RETURN
GO
/* Standard Get-By-ID */
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[<GETPROCEDURE>]') AND type in (N'P', N'PC'))
BEGIN
EXEC('CREATE PROCEDURE [dbo].[<GETPROCEDURE>] AS BEGIN SET NOCOUNT ON; END')
END
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[<GETPROCEDURE>]
(
@ID <SQLIDTYPE>
)
AS
SET NOCOUNT ON
SELECT
[ID]
,<COLUMNLIST>
FROM
[<TABLENAME>]
WHERE
([ID] = @ID)
SET NOCOUNT OFF
RETURN
GO
/* Standard Delete */
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[<DELETEPROCEDURE>]') AND type in (N'P', N'PC'))
BEGIN
EXEC('CREATE PROCEDURE [dbo].[<DELETEPROCEDURE>] AS BEGIN SET NOCOUNT ON; END')
END
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[<DELETEPROCEDURE>]
(
@ID <SQLIDTYPE>
)
AS
SET NOCOUNT ON
DELETE FROM
[<TABLENAME>]
WHERE
([ID] = @ID)
SET NOCOUNT OFF
RETURN
GO
#$@#@
/* FK Lookup */
/* Don't use this. It's garbage. */
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[<CLASSNAME>s_Get<CLASSNAME>IDsBy<FKPROPERTYNAME>]
(
@<FKPROPERTYNAME> <FKIDSQLTPE>
)
AS
SET NOCOUNT ON
SELECT
[ID]
FROM
[<CLASSNAME>s]
WHERE
([<FKPROPERTYNAME>] = @<FKPROPERTYNAME>)
SET NOCOUNT OFF
RETURN
599W#%44

View File

@ -0,0 +1,25 @@
$(function () {
//When the template category dropdown changes selection, update the option that is selected because
//our AJAX get will not refresh this value and we need it to be updated for future requests.
$('#templateCategories').change(function () {
var templateCategory = $(this);
$("option[selected='selected']").removeAttr('selected');
$('option').each(function () {
if ($(this).val() == $(templateCategory).val()) {
$(this).attr('selected', 'selected');
}
});
$('#TemplateCategory').val($(this).val());
$(this).closest('form').trigger('submit');
});
//Refresh the text fields
$('#NewTemplateCategory').val("");
$('#templateID').val("");
//Disable the remove button if there are no template categories
if ($('#templateCategories').val() == "" || $('#templateCategories').val() === 'undefined') {
$('#removeTemplateButton').attr('disabled', 'disabled');
}
});

View File

@ -0,0 +1,96 @@
$(function () {
$("span[data-make-button]").button();
var getButton = $("#get-value-button");
var setButton = $("#set-value-button");
var deleteButton = $("#delete-button");
var keyField = $("#setting-key");
var valueField = $("#setting-value");
var baseGetUrl = getButton.data("url");
var baseSetUrl = setButton.data("url");
var baseDeleteUrl = deleteButton.data("url");
var statusMessage = $("#status-message");
function showMessage(text, color) {
color = color || "black";
statusMessage.css("color", color);
statusMessage.text(text);
}
getButton.click(function () {
valueField.val(""); // clear value
var key = keyField.val();
var url = baseGetUrl + "?key=" + encodeURIComponent(key);
$.ajax({
url: url,
cache: false,
success: function (data) {
valueField.val(data);
showMessage("Setting found");
},
error: function (jqXHR, textStatus, errorThrown) {
showMessage(errorThrown, "red");
}
});
});
setButton.click(function () {
if (!Roblox.Admi.SettingsSemaphore.doesCurrentUserHoldSettingsSemaphore()) {
return false;
}
var confirmed = prompt("Are you sure you want to modify this setting? Type YES to continue.") == "YES";
if (confirmed) {
var key = keyField.val();
var value = valueField.val();
var params = { key: key, value: value };
$.post(baseSetUrl, params, function (data) {
if (data == "SET") {
showMessage("Setting saved", "green");
}
else {
showMessage("Error, setting was not saved", "red");
}
});
}
else {
showMessage("Save aborted", "orange");
}
});
deleteButton.click(function () {
if (!Roblox.Admi.SettingsSemaphore.doesCurrentUserHoldSettingsSemaphore()) {
return false;
}
var confirmed = prompt("Are you sure you want to modify this setting? Type YES to continue.") == "YES";
if (confirmed) {
var key = keyField.val();
var params = { key: key };
$.post(baseDeleteUrl, params, function (data) {
if (data == "DELETED") {
showMessage("Setting was deleted", "green");
}
else {
showMessage("Error, setting was not deleted", "red");
}
});
}
else {
showMessage("Delete aborted", "orange");
}
});
$("#format-json-button").click(function () {
var str = valueField.val();
try {
var json = JSON.parse(str);
var formattedString = JSON.stringify(json, null, 4);
valueField.val(formattedString);
}
catch (e) {
alert("Error while parsing JSON:\r\n" + e);
}
});
});

View File

@ -0,0 +1,23 @@
$(function () {
function updateSettingResults() {
var page = $('#MarketingConfigOptions .selected').attr('data-id');
var url = "/MarketingConfig/GetConfigs?" + $.param({ page: page });
$("#settingsResultsDiv").load(url, function () {});
}
function switchConfigs(event) {
$('#MarketingConfigOptions span').removeClass('selected');
$(event.target).addClass('selected');
updateSettingResults();
}
var settingsObj = Roblox.ConfigSettings({
isTakeoverPage: true,
updateSettingResults: updateSettingResults
});
settingsObj.init();
$('#MarketingConfigOptions span').click(function (event) {
switchConfigs(event);
});
});

View File

@ -0,0 +1,64 @@
$(function () {
//$('.StripedTable tr:even').css('background-color', '#ecf6fc');
//$('.StripedTable tr:odd').css('background-color', '#bcd4ec');
$('.StripedTable tr').mouseover(function () { $(this).addClass('MouseOver'); });
$('.StripedTable tr').mouseout(function () { $(this).removeClass('MouseOver'); });
$('.ThumbnailClass').click(
function () {
var assetId = $(this).attr('id').split('_')[1];
$(this).hide();
$('#assetId_' + assetId).show();
});
});
function UpdateItem(id, button) {
// Get our textbox values
var assettype, name, releasedate, priceinrobux, priceintickets, islimited, totalavailable;
name = $('#name_' + id).val();
releasedate = $('#releasedate_' + id).val();
priceinrobux = $('#priceinrobux_' + id).val();
priceintickets = $('#priceintickets_' + id).val();
islimited = $('#islimited_' + id).is(':checked');
totalavailable = $('#totalavailable_' + id).val();
isexpirable = $('#isexpirable_' + id).is(':checked');
expirationperiod = $('#expirationperiod_' + id).val();
if (expirationperiod === "D.HH:MM:SS") {
expirationperiod = ""; //otherwise we'll get an error
}
// Put up a spinny
button.attr('disabled', true);
if ($('#success_' + id) != null)
$('#success_' + id).remove();
if ($('#failure_' + id) != null)
$('#failure_' + id).remove();
if ($('#error_' + id) != null)
$('#error_' + id).remove();
var spinnerId = "spinner_" + id;
button.after("<img src='/images/waiting.gif' id='" + spinnerId + "'/>");
// Send them to the handler
$.get(
"/Legacy/Asset/DelayedReleaseAssetHandler.ashx?reqType=updateDelayedAsset" +
"&delayedReleaseAssetId=" + id +
"&name=" + name +
"&releasedate=" + releasedate +
"&priceinrobux=" + priceinrobux +
"&priceintickets=" + priceintickets +
"&islimited=" + islimited +
"&totalavailable=" + totalavailable +
"&isexpirable=" + isexpirable +
"&expirationperiod=" + expirationperiod
,
function (data) {
button.attr('disabled', false);
if (data.indexOf("Success") >= 0) {
$('#' + spinnerId).replaceWith("<img src='/UnsecureContent/images/accept.png' id='success_" + id + "' />");
}
else if (data.indexOf("Failure") >= 0) {
$('#' + spinnerId).replaceWith("<img src='/UnsecureContent/images/cross.png' id='failure_" + id + "' />");
$("#failure_" + id).after("<label id='error_" + id + "' style='color:red;'>" + data.substring(data.indexOf(':') + 1) + "</label>");
}
});
}

View File

@ -0,0 +1,71 @@

if (typeof Admin === "undefined") {
Admin = {};
}
Admin.FeaturedPlaces = function() {
var selectedPlaceIdEdit;
$('#NewPlatformInput').keypress(function(e) {
if (e.keyCode == 13) {
var name = $('#NewPlatformInput').val();
$.post('/featuredplaces/AddPlatformType', { platformName: name }, function(data) {
$('#ListOfPlatforms').html(data);
$('#NewPlatformInput').val("");
});
}
});
$('.btn-cancel').click(function() {
$.modal.close();
});
$('.btn-submit').click(function() {
var selectedPlaceId = $('#PlaceIDInput').val();
var url = '/featuredplaces/CreateFeaturedPlace?';
if (selectedPlaceId == undefined) {
selectedPlaceId = selectedPlaceIdEdit;
url = '/featuredplaces/EditFeaturedPlace?';
}
var platforms = $('input.platformFilter:checked').map(function() { return $(this).data('platformid'); }).get();
if (platforms != null) {
for (var i = 0; i < platforms.length; i++) {
url += "platformTypeIds=" + platforms[i] + "&";
}
}
url += 'placeId=' + selectedPlaceId;
$.post(url, function(data) {
window.location = "/CreateFeaturedPlaces";
});
});
$('#CreateNewFeaturedPlaceLink').click(function() {
GenericModal.open("Featured Place", null, null, null /* no callback */);
$.get('/featuredplaces/GetFeaturedPlaceInfo', function(data) {
$('#FeaturedPlaceData').html(data);
});
});
$('#PlatformTypeSelect').change(function() {
var selectedplatform = document.getElementById('PlatformTypeSelect').value;
window.location = "/CreateFeaturedPlaces?platformTypeId=" + selectedplatform;
});
$('.WhiteSquareTabsContainer li').bind('click', function() {
SwitchTabs($(this));
});
function SwitchTabs(nextTabElem) {
$('.WhiteSquareTabsContainer .selected, #TabsContentContainer .selected').removeClass('selected');
nextTabElem.addClass('selected');
$('#' + nextTabElem.attr('contentid')).addClass('selected');
}
$('.EditFeaturedPlace').click(function() {
selectedPlaceIdEdit = $(this).attr('placeid');
GenericModal.open("Featured Place", null, null, null /* no callback */);
$.get('/featuredplaces/GetFeaturedPlaceInfo', { placeId: selectedPlaceIdEdit }, function(data) {
$('#FeaturedPlaceData').html(data);
});
});
}();

View File

@ -0,0 +1,214 @@
if (typeof Roblox === "undefined") {
Roblox = {};
}
if (typeof Roblox.Admin === "undefined") {
Roblox.Admin = {};
}
Roblox.Admin.Games_BadgeAssetAward = function () {
//event binding
$(function () {
$('#AddButton').click(function () {
CreateNew();
return false;
});
$('#viewByID').click(function () {
GetBadgeAssetAwardsbyBadgeID();
return false;
});
$('#viewAll').click(function () {
GetAllBadgeAssetAwards();
return false;
});
$("#badgeIDInput").keypress(function(event){
if(event.keyCode=='13')
GetBadgeAssetAwardsbyBadgeID();
});
});
//variables
var pageSize, pageNum, totalNum;
//public methods
function Initialize(pagesize, pagenum, totalnum) {
pageSize = pagesize;
pageNum = pagenum;
totalNum = totalnum;
GetAllBadgeAssetAwards();
}
function ChangePage(newPage) {
pageNum = newPage;
GetAllBadgeAssetAwards();
}
function DeleteBadgeAssetAwardClick(e) {
var badgeAssetAwardID = $(this).attr('badgeassetawardid');
if (confirm("Are you sure you want to delete ID=" + badgeAssetAwardID)) {
DeleteBadgeAssetAward(badgeAssetAwardID);
}
}
function CreateNew() {
var badgeID = $('#badgeID').val();
var assetAwardID = $('#assetAwardID').val();
var description = $('#description').val();
var url = "BadgeAssetAwardHandler.ashx?cmd=add&badgeID=" + badgeID + "&assetID=" + assetAwardID + "&description=" + encodeURIComponent(description);
$.ajax({
type: "POST",
url: url,
cache: false,
dataType: "text",
success: function (data, extStatus, jqXHR) {
totalNum++;
GetAllBadgeAssetAwards();
dataJSON = $.parseJSON(data);
if(dataJSON != null)
{
alert(dataJSON.msg);
}
}
});
}
function GetBadgeAssetAwardsbyBadgeID() {
var badgeID = $('#badgeIDInput').val();
if (badgeID === '')
return;
if (badgeID === 0)
return;
var url = "BadgeAssetAwardHandler.ashx?cmd=getAwards&badgeID=" + badgeID;
$.ajax({
type: "POST",
url: url,
cache: false,
dataType: "json",
success: function (data, extStatus, jqXHR) {
dataJSON = $.parseJSON(data);
if(dataJSON != null)
{
alert(dataJSON.msg);
}
else
{
displayAssetAwards(data);
$("#pager").hide();
}
}
});
}
function GetAllBadgeAssetAwards() {
var url = "BadgeAssetAwardHandler.ashx?cmd=getAllAwards&StartRowIndex=" + (pageNum - 1) * pageSize + "&MaximumRows=" + pageSize;
$.ajax({
type: "POST",
url: url,
cache: false,
dataType: "json",
success: displayAssetAwards
});
}
//private functions
function displayAssetAwards(badgeAssetAwards) {
//clean out old list
$('#awardTable').detach();
if (badgeAssetAwards[0] == null) {
$('#noAwards').show();
}
else {
$('#noAwards').hide();
}
//construct new table
var counter = 0;
var newTable = $("#tableTemplate").clone(true).attr('id', 'awardTable');
while (badgeAssetAwards[counter] != null) {
var badgeAssetAward = unwrapBadgeAssetAward(badgeAssetAwards[counter]);
var newRow = $("#trTemplate").clone(true).show().attr('id', badgeAssetAward.id);
$(".ID", newRow).text(badgeAssetAward.id);
$(".BadgeID", newRow).text(badgeAssetAward.badgeID).attr('href', "/item.aspx?id=" + badgeAssetAward.badgeID);
$(".AssetAwardID", newRow).text(badgeAssetAward.assetAwardID).attr('href', "/item.aspx?id=" + badgeAssetAward.assetAwardID);
$(".Description", newRow).text(badgeAssetAward.description);
$(".Created", newRow).text(badgeAssetAward.created);
$(".Updated", newRow).text(badgeAssetAward.updated);
$(".editButton", newRow).attr("badgeassetawardid", badgeAssetAward.id);
$(".deleteButton", newRow).attr("badgeassetawardid", badgeAssetAward.id).click(DeleteBadgeAssetAwardClick);
newTable.append(newRow);
counter++;
}
newTable.show();
$('#AssetAwards').append(newTable);
$("#pager").html('').hide();
if (totalNum > pageSize) {
var beginPages = 1;
var endPage = Math.ceil(totalNum / pageSize);
var endPageGroup = Math.ceil(endPage / pageSize);
var currentPageGroup = Math.ceil(pageNum / pageSize);
var startIndex = (((currentPageGroup - 1) * pageSize) + 1)
var endIndex = (currentPageGroup * pageSize)
if (currentPageGroup != 1) {
$("#pager").append('<a onclick="Roblox.Admin.Games_ViewBadgeAssetAward.ChangePage(' + ((currentPageGroup * pageSize) - 1) + ')" style="padding: 5px; cursor: pointer">...</a>');
}
for (var j = startIndex; j <= endIndex; j++) {
if (j > endPage) {
break;
}
else if (j == pageNum) {
$("#pager").append('<span style="font-weight:bold;padding: 1px">' + j + '</span>');
}
else {
$("#pager").append('<a onclick="Roblox.Admin.Games_BadgeAssetAward.ChangePage(' + j + ')" style="padding: 5px; cursor: pointer">' + j + '</a>');
}
}
if (currentPageGroup < endPageGroup) {
$("#pager").append('<a Roblox.Admin.Games_BadgeAssetAward.ChangePage(' + ((currentPageGroup * pageSize) + 1) + ')" style="padding: 5px; cursor: pointer">...</a>').show();
}
$('#pager').show();
}
}
function unwrapBadgeAssetAward(badgeAssetAward) {
return {
id: badgeAssetAward.ID,
badgeID: badgeAssetAward.BadgeID,
assetAwardID: badgeAssetAward.AssetAwardID,
description: badgeAssetAward.Description,
created: dateHelper(badgeAssetAward.Created),
updated: dateHelper(badgeAssetAward.Updated)
}
}
function dateHelper(unclean) {
var clean = Number(unclean.substring(6, 19));
var date = new Date(clean);
return (date.getMonth() + 1) + "/" + date.getDate() + "/" + date.getFullYear();
}
function DeleteBadgeAssetAward(badgeAssetAwardID) {
var url = "BadgeAssetAwardHandler.ashx?cmd=delete&bAAID=" + badgeAssetAwardID;
$.ajax({
type: "POST",
url: url,
cache: false,
dataType: "text",
success: function (data, extStatus, jqXHR) {
var dataJSON = $.parseJSON(data);
if(dataJSON !== null)
{
if(dataJSON.status === "faliure")
{
alert(dataJSON.msg);
}
else
{
alert(dataJSON.msg);
totalNum--;
GetAllBadgeAssetAwards();
}
}
}
});
}
//Interface exposing public methods!
return {
ChangePage: ChangePage,
Initialize: Initialize
};
} ();

283
Admi/Scripts/Services.js Normal file
View File

@ -0,0 +1,283 @@
$(function () {
function warningPrompt(promptToShow) {
var text = promptToShow + "\n\nType YES to confirm.";
var result = prompt(text);
return result == "YES";
}
$("span[data-make-button]").button();
////////////// clients page starts //////////////
var clientDialog = $("#clientDialog").dialog({
title: "Create New Api Client",
modal: true,
resizable: false,
width: 500,
autoOpen: false,
buttons: {
"Generate Guid": function() {
// get a guid from the server
$.get("/ServicesConfig/GenerateGuid", function(guid) {
$("#clientKey").val(guid);
});
},
"Save": function () {
var params = {
key: $("#clientKey").val(),
note: $("#clientNote").val(),
};
$.post("/ServicesConfig/AddClient", params, function () {
clientDialog.dialog("close");
window.location.reload();
});
},
"Cancel": function () {
clientDialog.dialog("close");
}
}
});
$("#create-new-client-button").click(function () {
clientDialog.dialog("open");
});
/*
$("a[data-delete-client]").click(function () {
var tr = $(this).closest("tr");
var note = tr.data("note");
if (warningPrompt("Are you sure you want to delete client '" + note + "'?")) {
var key = tr.data("key");
// do deletion
$.post("/ServicesConfig/DeleteClient", { key: key }, function() {
window.location.reload();
});
}
return false;
});
*/
//////////////// clients page ends //////////////////////
////////////////// services page starts //////////////////////
var serviceDialog = $("#serviceDialog").dialog({
title: "Create New Api Service",
modal: true,
resizable: false,
width: 500,
autoOpen: false,
buttons: {
"Save": function () {
var params = {
name: $("#serviceName").val(),
};
$.post("/ServicesConfig/AddService", params, function () {
serviceDialog.dialog("close");
window.location.reload();
});
},
"Cancel": function () {
serviceDialog.dialog("close");
}
}
});
$("#create-new-service-button").click(function () {
serviceDialog.dialog("open");
});
/*
$("a[data-delete-service]").click(function () {
var tr = $(this).closest("tr");
var serviceName = tr.data("name");
if (warningPrompt("Are you sure you want to delete service '" + serviceName + "'?")) {
// do deletion
$.post("/ServicesConfig/DeleteService", { name: serviceName }, function() {
window.location.reload();
});
}
return false;
});
*/
//////////////// services page ends ////////////////////////////
///////////// operations page starts ///////////////////
var operationDialog = $("#operationDialog").dialog({
title: "Create New Operation",
modal: true,
resizable: false,
width: 500,
autoOpen: false,
buttons: {
"Save": function () {
var params = {
operationName: $("#operationName").val(),
serviceName: $("#current-service-name").val()
};
$.post("/ServicesConfig/AddOperation", params, function () {
operationDialog.dialog("close");
window.location.reload();
});
},
"Cancel": function () {
operationDialog.dialog("close");
}
}
});
$("#create-new-operation-button").click(function () {
operationDialog.dialog("open");
});
$("a[data-delete-operation]").click(function () {
var tr = $(this).closest("tr");
var operationName = tr.data("name");
if (warningPrompt("Are you sure you want to delete operation '" + operationName + "'?")) {
// do deletion
var operationId = $(this).data("operationid");
var params = {
operationId: operationId
};
$.post("/ServicesConfig/DeleteOperation", params, function() {
window.location.reload();
});
}
return false;
});
///////////// operations page ends ///////////////////
/////////// service authorizations page starts ////////////////
var serviceAuthorizationDialog = $("#serviceAuthorizationDialog").dialog({
title: "Create New Service Authorization",
modal: true,
resizable: false,
width: 530,
autoOpen: false,
buttons: {
"Save": function () {
var params = {
key: $("#clientKey").val(),
serviceName: $("#serviceName").val(),
authorizationType: $("#authorizationType").val()
};
$.post("/ServicesConfig/AddServiceAuthorization", params, function () {
serviceAuthorizationDialog.dialog("close");
window.location.reload();
});
},
"Cancel": function () {
serviceAuthorizationDialog.dialog("close");
}
}
});
$("#create-new-service-authorization-button").click(function () {
serviceAuthorizationDialog.dialog("open");
});
$("a[data-change-service-authorization]").click(function() {
var tr = $(this).closest("tr");
var serviceName = tr.data("service-name");
var authorizationType = $(this).text();
if (warningPrompt("Are you sure you want to change authorization of '" + serviceName +"' to '" + authorizationType + "'? Please note that changing authorization to 'None' will delete it.")) {
var params = {
key: $("#clientKey").val(),
serviceName: serviceName,
authorizationType: authorizationType
};
$.post("/ServicesConfig/AddServiceAuthorization", params, function () {
window.location.reload();
});
}
return false;
});
/////////// service authorizations page ends ////////////////
/////////// operation authorizations page starts ////////////////
var serviceNameDropDown = $("#operationAuthorizationDialog #serviceName");
var operationNameDropDown = $("#operationAuthorizationDialog #operationName");
var operationAuthorizationDialog = $("#operationAuthorizationDialog").dialog({
title: "Create New Operation Authorization",
modal: true,
resizable: false,
width: 530,
autoOpen: false,
buttons: {
"Save": function () {
var params = {
key: $("#clientKey").val(),
serviceName: serviceNameDropDown.val(),
operationName: operationNameDropDown.val(),
authorizationType: $("#authorizationType").val()
};
$.post("/ServicesConfig/AddOperationAuthorization", params, function () {
operationAuthorizationDialog.dialog("close");
window.location.reload();
});
},
"Cancel": function () {
operationAuthorizationDialog.dialog("close");
}
}
});
serviceNameDropDown.change(function() {
$.get("/ServicesConfig/GetOperations", { serviceName: serviceNameDropDown.val() }, function(opsArray) {
operationNameDropDown.empty(); // clear
for (var i = 0; i < opsArray.length; i++) {
var opName = opsArray[i];
operationNameDropDown.append("<option>" + opName + "</option>");
}
});
});
var createNewOpAuthButton = $("#create-new-operation-authorization-button");
createNewOpAuthButton.one("click", function() {
serviceNameDropDown.trigger("change"); // pre-populate for the first time only
});
createNewOpAuthButton.click(function () {
operationAuthorizationDialog.dialog("open");
});
$("a[data-change-operation-authorization]").click(function() {
var tr = $(this).closest("tr");
var serviceName = tr.data("service-name");
var operationName = tr.data("operation-name");
var authorizationType = $(this).text();
if (warningPrompt("Are you sure you want to change authorization of operation '" + operationName +"' of service '" + serviceName +"' to '" + authorizationType + "'? Please note that changing authorization to 'None' will delete it.")) {
var params = {
key: $("#clientKey").val(),
serviceName: serviceName,
operationName: operationName,
authorizationType: authorizationType
};
$.post("/ServicesConfig/AddOperationAuthorization", params, function () {
window.location.reload();
});
}
return false;
});
/////////// operation authorizations page ends ////////////////
});

403
Admi/Scripts/Settings.js Normal file
View File

@ -0,0 +1,403 @@
var Roblox = Roblox || {};
$(function () {
Roblox.ConfigSettings = function (settingsArray) {
settingsArray = settingsArray || {};
var isTakeoverPage = false;
if (settingsArray.isTakeoverPage != isTakeoverPage)
isTakeoverPage = settingsArray.isTakeoverPage;
function showAlertDialog(title, message) {
var dlg = window.rbxAlertDialog;
if (!dlg) {
dlg = window.rbxAlertDialog = $("#alertDialog").dialog({
modal: true,
resizable: false,
width: 400,
autoOpen: false,
buttons: {
"OK": function () {
dlg.dialog("close");
}
}
});
}
$("#alertDialogText").text(message);
dlg.dialog("option", "title", title);
dlg.dialog("open");
}
function showMessage(message) {
window.scrollTo(0, 0);
$("#messageDivText").text(message);
$("#messageDiv").fadeIn();
}
function hideMessage() {
$("#messageDiv").fadeOut("slow");
}
function showDeleteDialog(postUrl, id, message, updateHandler) {
var dlg = window.rbxDeleteDialog;
if (!dlg) {
dlg = window.rbxDeleteDialog = $("#deleteDialog").dialog({
modal: true,
resizable: false,
width: 400,
autoOpen: false,
buttons: {
"Delete": function () {
dlg.onDelete();
dlg.dialog("close");
},
"Cancel": function () {
dlg.dialog("close");
}
}
});
};
$("#deleteDialogMessage").text(message);
dlg.currentId = id;
dlg.onDelete = function () {
$.post(postUrl, { id: id }, function (responseMessage) {
if (responseMessage) {
showAlertDialog("Success", responseMessage);
updateHandler();
}
else {
showAlertDialog("Error", "Delete failed!");
}
});
};
dlg.dialog("open");
return false;
}
var updateSettingResults = function (handler) {
var url = "/Config/GetSettingsHtmlAjax?" + $.param({ GroupName: $("#GroupName").val(), NamePattern: $("#NamePattern").val() });
$("#settingsResultsDiv").load(url, function () {
if (handler) {
handler();
}
});
};
//if we have an override, use it instead
if (settingsArray.updateSettingResults != undefined) {
updateSettingResults = settingsArray.updateSettingResults;
}
var editSettingDialog = $("#settingsDialog").dialog({
modal: true,
resizable: false,
width: 520,
autoOpen: false,
buttons: {
"Save": function () {
var newSetting;
var params = {
id: editSettingDialog.currentId,
value: $("#dlgValue").val(),
comment: $("#dlgComment").val(),
env: $("#dlgIsEnvSpecific").prop("checked"),
// following settings will NOT get updated on save
group: $("#dlgGroup").val(),
type: $("#dlgType").val(),
name: $("#dlgName").val()
};
if (params.id == -1) {
// for new settings, append extra parameters
newSetting = true;
}
var url = (isTakeoverPage ? "/MarketingConfig/SetSettingAjax" : "/Config/SetSettingAjax");
$.post(url, params, function (response) {
if (response.SettingSaved) {
if (newSetting && $.inArray(params.group, window.groupNames) == -1) {
window.groupNames.push(params.group);
$("#GroupName").append('<option>' + params.group + '</option>');
$("#GroupName").val(params.group);
}
updateSettingResults(function () {
showMessage("Setting '" + params.group + "' - '" + params.name + "' was saved.");
});
}
else {
showAlertDialog("Error", "Setting was NOT saved! " + response.Message);
}
editSettingDialog.dialog("close");
});
},
"Cancel": function () {
editSettingDialog.dialog("close");
}
}
});
function init() {
$("#messageDiv").live("click", function () {
hideMessage();
});
$("#dlgGroup").autocomplete({ source: window.groupNames });
$("#dlgType").autocomplete({ source: [
"System.Boolean",
"System.Byte",
"System.Double",
"System.Float",
"System.Int32",
"System.Int64",
"System.TimeSpan",
"System.String",
"System.Guid"
]
});
$("#settingsResultsDiv a:contains('Edit')").live("click", function () {
if (!Roblox.Admi.SettingsSemaphore.doesCurrentUserHoldSettingsSemaphore()) {
return false;
}
var id = $(this).closest("tr").data("sid");
var url = (isTakeoverPage ? "/MarketingConfig/GetSettingAjax?id=" : "/Config/GetSettingAjax?id=");
$.getJSON(url + id, function (s) {
$("#dlgGroup").attr("disabled", true).val(s.GroupName);
$("#dlgType").attr("disabled", true).val(s.Type);
$("#dlgName").attr("disabled", true).val(s.Name);
$("#dlgModified").val(s.LastModified);
$("#dlgValue").val(s.Value);
$("#dlgComment").val(s.Comment);
$("#dlgIsEnvSpecific").prop("checked", s.IsEnvironmentSpecific);
editSettingDialog.currentId = id;
editSettingDialog.dialog("option", "title", "Edit Setting");
editSettingDialog.dialog("open");
});
return false;
});
$("#settingsResultsDiv a:contains('Delete')").live("click", function () {
if (!Roblox.Admi.SettingsSemaphore.doesCurrentUserHoldSettingsSemaphore()) {
return false;
}
var id = $(this).closest("tr").data("sid");
return showDeleteDialog("/Config/DeleteSettingAjax", id, "Are you sure you want to delete this setting?", updateSettingResults);
});
$("#configTabs").tabs();
$("span[data-make-button]").button();
$("#CreateNewSettingButton").click(function () {
if (!Roblox.Admi.SettingsSemaphore.doesCurrentUserHoldSettingsSemaphore()) {
return false;
}
// default to currently selected group
var defaultName = $("#GroupName").val();
if (defaultName == "*") {
defaultName = ""; // do not show * when all grups is selected in the drop down
}
$("#dlgGroup").attr("disabled", false).val(defaultName);
$("#dlgType").attr("disabled", false).val("");
$("#dlgName").attr("disabled", false).val("");
$("#dlgModified").val("Set Automatically");
$("#dlgValue").val("");
$("#dlgComment").val("");
$("#dlgIsEnvSpecific").prop("checked", false);
editSettingDialog.currentId = -1;
editSettingDialog.dialog("option", "title", "Create Setting");
editSettingDialog.dialog("open");
return false;
});
$("#GroupName").change(function () {
if (this.value) {
updateSettingResults();
}
});
$("#NamePattern").keyup(function () {
updateSettingResults();
});
$("#ClearButton").click(function () {
$("#NamePattern").val("");
updateSettingResults();
});
updateSettingResults();
}
/////////////////////////////////////
// edit connection strings
var editConnectionDialog = $("#connectionStringDialog").dialog({
modal: true,
resizable: false,
width: 520,
autoOpen: false,
buttons: {
"Save": function () {
var params = {
id: editConnectionDialog.currentId,
value: $("#conDlgValue").val()
};
if (params.id == -1) {
// for new settings, append extra parameters
params.group = $("#conDlgGroup").val();
params.name = $("#conDlgName").val();
}
$.post("/Config/SetConnectionStringAjax", params, function (s) {
if (s) {
updateConnectionsResults();
showAlertDialog("Roblox", "Connection was saved");
}
else {
showAlertDialog("Error", "Connection was NOT saved!");
}
editConnectionDialog.dialog("close");
});
},
"Cancel": function () {
editConnectionDialog.dialog("close");
}
}
});
$("#connectionStringsResultsDiv a:contains('Edit')").live("click", function () {
var id = $(this).closest("tr").data("id");
$.getJSON("/Config/GetConnectionStringAjax?id=" + id, function (s) {
$("#conDlgGroup").attr("disabled", true).val(s.GroupName);
$("#conDlgName").attr("disabled", true).val(s.Name);
$("#conDlgModified").val(s.LastModified);
$("#conDlgValue").val(s.Value);
editConnectionDialog.currentId = id;
editConnectionDialog.dialog("option", "title", "Edit Connection String");
editConnectionDialog.dialog("open");
});
return false;
});
$("#connectionStringsResultsDiv a:contains('Delete')").live("click", function () {
var id = $(this).closest("tr").data("id");
return showDeleteDialog("/Config/DeleteConnectionStringAjax", id, "Are you sure you want to delete this connection string?", updateConnectionsResults);
});
function updateConnectionsResults() {
$("#connectionStringsResultsDiv").load("/Config/GetConnectionStringsHtmlAjax");
}
$("#CreateNewConnectionButton").click(function () {
$("#conDlgGroup").attr("disabled", false).val("");
$("#conDlgName").attr("disabled", false).val("");
$("#conDlgModified").val("Set Automatically");
$("#conDlgValue").val("");
editConnectionDialog.currentId = -1;
editConnectionDialog.dialog("option", "title", "Create Connection String");
editConnectionDialog.dialog("open");
return false;
});
updateConnectionsResults();
///////////// endpoints /////////////////////
function updateEndpointsResults() {
$("#endpointsResultsDiv").load("/Config/GetEndpointAddressListHtmlAjax");
}
updateEndpointsResults();
var editEndpointDialog = $("#endpointDialog").dialog({
modal: true,
resizable: false,
width: 520,
autoOpen: false,
buttons: {
"Save": function () {
var params = {
id: editEndpointDialog.currentId,
uri: $("#epUri").val(),
name: $("#epName").val()
};
$.post("/Config/SetEndpointAjax", params, function (s) {
if (s) {
updateEndpointsResults();
showAlertDialog("Roblox", "WCF Endpoint was saved");
}
else {
showAlertDialog("Error", "WCF Endpoint was NOT saved!");
}
editEndpointDialog.dialog("close");
});
},
"Cancel": function () {
editEndpointDialog.dialog("close");
}
}
});
$("#CreateNewEndpointAddressButton").click(function () {
$("#epId").val("Set Automatically");
$("#epName").val("");
$("#epUri").val("");
editEndpointDialog.currentId = -1;
editEndpointDialog.dialog("option", "title", "Create WCF Endpoint");
editEndpointDialog.dialog("open");
});
$("#endpointsResultsDiv a:contains('Edit')").live("click", function () {
var id = $(this).closest("tr").data("id");
$.getJSON("/Config/GetEndpointAjax?id=" + id, function (s) {
$("#epId").val(s.ID);
$("#epName").val(s.EndpointConfigurationName);
$("#epUri").val(s.Uri);
editEndpointDialog.currentId = id;
editEndpointDialog.dialog("option", "title", "Edit WCF Endpoint");
editEndpointDialog.dialog("open");
});
return false;
});
$("#endpointsResultsDiv a:contains('Delete')").live("click", function () {
var id = $(this).closest("tr").data("id");
return showDeleteDialog("/Config/DeleteEndpointAjax", id, "Are you sure you want to delete this WCF endpoint?", updateEndpointsResults);
});
return {
init: init
};
};
});

View File

@ -0,0 +1,39 @@
$(function () {
$("#ShutdownDialog").dialog({
autoOpen: false,
height: 200,
width: 500,
modal: true,
buttons: {
"Confirm": function () {
if ($("#ShutdownDialogInput").val().toLowerCase() != "yes") {
$("#ShutdownDialogError").show();
return;
}
$("button").button("disable");
$("#ShutdownDisplaynameInput").val($(this).data("display-name"));
$("#ShutdownValueInput").val($(this).data("value"));
$("#ShutdownForm").submit();
},
"Cancel": function () {
$(this).dialog("close");
}
}
});
$(".shutdownButton").button().click(function () {
var shutdownDialog = $("#ShutdownDialog");
var dataValue = $(this).data("value");
shutdownDialog.data("value", dataValue);
var dataDisplayName = $(this).data("display-name");
shutdownDialog.data("display-name", dataDisplayName);
if (dataValue == "True") {
$("#ShutdownDialogText").text("Are you sure you want to activate " + dataDisplayName + "? Type \"yes\" to continue.");
} else {
$("#ShutdownDialogText").text("Are you sure you want to shutdown " + dataDisplayName + "? Type \"yes\" to continue.");
}
$("#ShutdownDialogInput").val("");
$("#ShutdownDialogError").hide();
shutdownDialog.dialog("open");
});
})

75
Admi/Scripts/Versions.js Normal file
View File

@ -0,0 +1,75 @@
$(function () {
$("span[data-make-button], input[data-make-button]").button();
var appVersionForm = document.getElementById("app-version-form");
var appVersionDialog = $("#app-version-dialog").dialog({
modal: true,
resizable: false,
width: 520,
autoOpen: false,
buttons: {
"Save": function () {
appVersionForm.submit();
},
"Cancel": function () {
appVersionDialog.dialog("close");
}
}
});
$("a[data-edit-app-version]").click(function () {
var anchor = $(this);
$("#app-version-id").val(anchor.data("id"));
$("#app-version-value").val(anchor.data("value"));
$("#app-version-platform-type-id").val(anchor.data("platform-type-id"));
$("#app-version-status-type-id").val(anchor.data("status-type-id"));
$("#app-version-description").val(anchor.data("description"));
appVersionDialog.dialog("option", "title", "Edit App Version");
appVersionDialog.dialog("open");
return false;
});
$("#create-new-app-version-button").click(function () {
appVersionForm.reset();
appVersionDialog.dialog("option", "title", "Create App Version");
appVersionDialog.dialog("open");
});
///////// security versions ////////
var securityVersionForm = document.getElementById("security-version-form");
var securityVersionDialog = $("#security-version-dialog").dialog({
modal: true,
resizable: false,
width: 520,
autoOpen: false,
buttons: {
"Save": function () {
securityVersionForm.submit();
},
"Cancel": function () {
securityVersionDialog.dialog("close");
}
}
});
$("a[data-edit-security-version]").click(function () {
var anchor = $(this);
$("#security-version-id").val(anchor.data("id"));
$("#security-version-value").val(anchor.data("value"));
$("#security-version-is-valid").val(anchor.data("is-valid"));
$("#security-version-description").val(anchor.data("description"));
securityVersionDialog.dialog("option", "title", "Edit Security Version");
securityVersionDialog.dialog("open");
return false;
});
$("#create-new-security-version-button").click(function () {
securityVersionForm.reset();
securityVersionDialog.dialog("option", "title", "Create Security Version");
securityVersionDialog.dialog("open");
});
});

11
Admi/Scripts/accordion.js Normal file
View File

@ -0,0 +1,11 @@
$(function () {
$.extend($.ui.accordion.animations, {
myslide: function (options) {
$.ui.accordion.animations.slide(options, { duration: 400 });
}
});
$("#accordion").accordion({ autoHeight: false, collapsible: true, animated: "myslide" });
});

View File

@ -0,0 +1,203 @@
if (typeof Roblox === "undefined") {
Roblox = {};
}
if (typeof Roblox.Admi === "undefined") {
Roblox.Admi = {};
}
if (typeof Roblox.Admi.Billing === "undefined") {
Roblox.Admi.Billing = {};
}
Roblox.Admi.Billing.Merchant = function () {
//variables
var pageSize, pageNum, totalNum;
//run on document load
$(function () {
var numMerchants = $("#dataHolder").data("merchant-count");
initialize(20, 1, numMerchants);
getMerchants();
$('.MerchActive .checkbox').live("click", Roblox.Admi.Billing.Merchant.changeActive);
$('.merch-hidden .checkbox').live("click", Roblox.Admi.Billing.Merchant.changeHidden);
$('.MerchCountry select').change(Roblox.Admi.Billing.Merchant.changeCountry);
});
//private methods
function getMerchants() {
var startRow = (pageNum - 1) * pageSize + 1;
var reqData = { startRowIndex: startRow, maxRows: pageSize };
var url = "/merchants/get-merchants";
$.post(url, reqData, function(data) {
if (data.success) {
displayMerchants(data.merchants, data.countryMerchants);
} else {
$("#ErrorText").text("Error retrieving Merchant records.");
$("#ErrorDiv").show();
}
});
}
function unwrapMerchant(merchant) {
return {
id: merchant.ID,
name: merchant.Name,
active: merchant.Active,
hidden: merchant.IsHidden,
created: dateHelper(merchant.Created),
updated: dateHelper(merchant.Updated)
}
}
function dateHelper(unclean) {
var clean = eval(unclean.substring(6, 19));
var date = new Date(clean);
return (date.getMonth() + 1) + "/" + date.getDate() + "/" + date.getFullYear();
}
function displayMerchants(merchants, countryMerchants) {
//clean out old list
$('#MerchTable').detach();
$('#.pager').children().remove();
//add new Merchants
var counter = 0;
var newTable = $("#tableTemplate").clone(true).attr('id', 'MerchTable').show();
while (merchants[counter] != null) {
var merchant = unwrapMerchant(merchants[counter]);
var newRow = $("#trTemplate").clone(true).show().attr('id', merchant.id);
$("div.MerchID", newRow).text(merchant.id);
$("div.MerchName", newRow).text(merchant.name);
$("div.MerchActive", newRow).children().attr('checked', merchant.active).attr('id', merchant.id);
$("div.merch-hidden", newRow).children().attr('checked', merchant.hidden).attr('id', merchant.id);
$("div.MerchCreated", newRow).text(merchant.created);
$("div.MerchUpdated", newRow).text(merchant.updated);
$("div.MerchCountry select", newRow).val(countryMerchants[merchant.name]).attr('id', merchant.id);
newRow.show();
newTable.append(newRow);
counter++;
}
$('#Merchants').append(newTable);
$("#pager").html('').hide();
if (totalNum > pageSize) {
var endPage = Math.ceil(totalNum / pageSize);
var endPageGroup = Math.ceil(endPage / pageSize);
var currentPageGroup = Math.ceil(pageNum / pageSize);
var startIndex = (((currentPageGroup - 1) * pageSize) + 1)
var endIndex = (currentPageGroup * pageSize)
if (currentPageGroup != 1) {
$("#pager").append('<a onclick="Roblox.Admi.Billing.Merchant.changePage(' + ((currentPageGroup * pageSize) - 1) + ')" style="padding: 5px; cursor: pointer">...</a>');
}
for (var j = startIndex; j <= endIndex; j++) {
if (j > endPage) {
break;
}
else if (j == pageNum) {
$("#pager").append('<span style="font-weight:bold;padding: 1px">' + j + '</span>');
}
else {
$("#pager").append('<a onclick="Roblox.Admi.Billing.Merchant.changePage(' + j + ')" style="padding: 5px; cursor: pointer">' + j + '</a>');
}
}
if (currentPageGroup < endPageGroup) {
$("#pager").append('<a Roblox.Admi.Billing.Merchant.changePage(' + ((currentPageGroup * pageSize) + 1) + ')" style="padding: 5px; cursor: pointer">...</a>').show();
}
$('#pager').show();
}
}
//public methods
function initialize(pagesize, pagenum, totalnum) {
pageSize = pagesize;
pageNum = pagenum;
totalNum = totalnum;
}
function changePage(newPage) {
pageNum = newPage;
$('#ErrorDiv').hide();
$('#SuccessDiv').hide();
getMerchants();
}
function changeActive() {
var id = this.id;
var checked = this.checked;
var url = "/merchants/" + id + "/update?active=" + checked;
$.post(url, function(data) {
if (data.success) {
$('#SuccessText').text(data.message);
$('#SuccessDiv').show();
} else {
$('#ErrorText').text(data.message);
$('#ErrorDiv').show();
}
});
}
function changeHidden() {
var id = this.id;
var checked = this.checked;
var url = "/merchants/" + id + "/update?hidden=" + checked;
$.post(url, function (data) {
if (data.success) {
$('#SuccessText').text(data.message);
$('#SuccessDiv').show();
} else {
$('#ErrorText').text(data.message);
$('#ErrorDiv').show();
}
});
}
function changeCountry() {
var id = this.id;
var countryID = $(this).children(":selected").val();
var url = "/merchants/" + id + "/update?countryID=" + countryID;
$.post(url, function(data) {
if (data.success) {
$('#SuccessText').text(data.message);
$('#SuccessDiv').show();
} else {
$('#ErrorText').text(data.message);
$('#ErrorDiv').show();
}
});
}
function createMerchant() {
$('#SuccessDiv').hide();
$('#ErrorDiv').hide();
var name = $('.merchantNameInput').val();
var active = ($('#merchantActive').attr('checked') === "checked");
var countryID = $('#merchantCountry').children(":selected").attr("id");
var reqData = { merchantName: name, merchantActive: active, merchantCountryID: countryID };
var url = "/merchants/add-merchant";
$.post(url, reqData, function(data) {
if (data.success) {
$('.merchantNameInput').val('');
$('#merchantActive').prop('checked', false);
$('#merchantCountry option').eq(0).prop('selected', true);
totalNum++;
changePage(Math.ceil(totalNum / pageSize));
var msg = 'Successfully added ' + name + ' to the database.';
$('#SuccessText').text(msg);
$('#SuccessDiv').show();
displayMerchants(data.merchants, data.countryMerchants);
} else {
$('#ErrorText').text(data.message);
$('#ErrorDiv').show();
}
});
}
//Interface exposing public methods!
return {
initialize: initialize,
changeActive: changeActive,
changeHidden: changeHidden,
createMerchant: createMerchant,
changePage: changePage,
changeCountry: changeCountry
}
} ();

15
Admi/Scripts/jquery-ui-1.8.18.min.js vendored Normal file

File diff suppressed because one or more lines are too long

2
Admi/Scripts/jquery.sceditor.min.js vendored Normal file

File diff suppressed because one or more lines are too long

165
Admi/Scripts/jquery.unobtrusive-ajax.js vendored Normal file
View File

@ -0,0 +1,165 @@
/// <reference path="jquery-1.7.1.js" />
/*!
** Unobtrusive Ajax support library for jQuery
** Copyright (C) Microsoft Corporation. All rights reserved.
*/
/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */
/*global window: false, jQuery: false */
(function ($) {
var data_click = "unobtrusiveAjaxClick",
data_validation = "unobtrusiveValidation";
function getFunction(code, argNames) {
var fn = window, parts = (code || "").split(".");
while (fn && parts.length) {
fn = fn[parts.shift()];
}
if (typeof (fn) === "function") {
return fn;
}
argNames.push(code);
return Function.constructor.apply(null, argNames);
}
function isMethodProxySafe(method) {
return method === "GET" || method === "POST";
}
function asyncOnBeforeSend(xhr, method) {
if (!isMethodProxySafe(method)) {
xhr.setRequestHeader("X-HTTP-Method-Override", method);
}
}
function asyncOnSuccess(element, data, contentType) {
var mode;
if (contentType.indexOf("application/x-javascript") !== -1) { // jQuery already executes JavaScript for us
return;
}
mode = (element.getAttribute("data-ajax-mode") || "").toUpperCase();
$(element.getAttribute("data-ajax-update")).each(function (i, update) {
var top;
switch (mode) {
case "BEFORE":
top = update.firstChild;
$("<div />").html(data).contents().each(function () {
update.insertBefore(this, top);
});
break;
case "AFTER":
$("<div />").html(data).contents().each(function () {
update.appendChild(this);
});
break;
default:
$(update).html(data);
break;
}
});
}
function asyncRequest(element, options) {
var confirm, loading, method, duration;
confirm = element.getAttribute("data-ajax-confirm");
if (confirm && !window.confirm(confirm)) {
return;
}
loading = $(element.getAttribute("data-ajax-loading"));
duration = element.getAttribute("data-ajax-loading-duration") || 0;
$.extend(options, {
type: element.getAttribute("data-ajax-method") || undefined,
url: element.getAttribute("data-ajax-url") || undefined,
beforeSend: function (xhr) {
var result;
asyncOnBeforeSend(xhr, method);
result = getFunction(element.getAttribute("data-ajax-begin"), ["xhr"]).apply(this, arguments);
if (result !== false) {
loading.show(duration);
}
return result;
},
complete: function () {
loading.hide(duration);
getFunction(element.getAttribute("data-ajax-complete"), ["xhr", "status"]).apply(this, arguments);
},
success: function (data, status, xhr) {
asyncOnSuccess(element, data, xhr.getResponseHeader("Content-Type") || "text/html");
getFunction(element.getAttribute("data-ajax-success"), ["data", "status", "xhr"]).apply(this, arguments);
},
error: getFunction(element.getAttribute("data-ajax-failure"), ["xhr", "status", "error"])
});
options.data.push({ name: "X-Requested-With", value: "XMLHttpRequest" });
method = options.type.toUpperCase();
if (!isMethodProxySafe(method)) {
options.type = "POST";
options.data.push({ name: "X-HTTP-Method-Override", value: method });
}
$.ajax(options);
}
function validate(form) {
var validationInfo = $(form).data(data_validation);
return !validationInfo || !validationInfo.validate || validationInfo.validate();
}
$("a[data-ajax=true]").live("click", function (evt) {
evt.preventDefault();
asyncRequest(this, {
url: this.href,
type: "GET",
data: []
});
});
$("form[data-ajax=true] input[type=image]").live("click", function (evt) {
var name = evt.target.name,
$target = $(evt.target),
form = $target.parents("form")[0],
offset = $target.offset();
$(form).data(data_click, [
{ name: name + ".x", value: Math.round(evt.pageX - offset.left) },
{ name: name + ".y", value: Math.round(evt.pageY - offset.top) }
]);
setTimeout(function () {
$(form).removeData(data_click);
}, 0);
});
$("form[data-ajax=true] :submit").live("click", function (evt) {
var name = evt.target.name,
form = $(evt.target).parents("form")[0];
$(form).data(data_click, name ? [{ name: name, value: evt.target.value }] : []);
setTimeout(function () {
$(form).removeData(data_click);
}, 0);
});
$("form[data-ajax=true]").live("submit", function (evt) {
var clickInfo = $(this).data(data_click) || [];
evt.preventDefault();
if (!validate(this)) {
return;
}
asyncRequest(this, {
url: this.action,
type: this.method || "GET",
data: clickInfo.concat($(this).serializeArray())
});
});
}(jQuery));

View File

@ -0,0 +1,5 @@
/*
** Unobtrusive Ajax support library for jQuery
** Copyright (C) Microsoft Corporation. All rights reserved.
*/
(function(a){var b="unobtrusiveAjaxClick",g="unobtrusiveValidation";function c(d,b){var a=window,c=(d||"").split(".");while(a&&c.length)a=a[c.shift()];if(typeof a==="function")return a;b.push(d);return Function.constructor.apply(null,b)}function d(a){return a==="GET"||a==="POST"}function f(b,a){!d(a)&&b.setRequestHeader("X-HTTP-Method-Override",a)}function h(c,b,e){var d;if(e.indexOf("application/x-javascript")!==-1)return;d=(c.getAttribute("data-ajax-mode")||"").toUpperCase();a(c.getAttribute("data-ajax-update")).each(function(f,c){var e;switch(d){case"BEFORE":e=c.firstChild;a("<div />").html(b).contents().each(function(){c.insertBefore(this,e)});break;case"AFTER":a("<div />").html(b).contents().each(function(){c.appendChild(this)});break;default:a(c).html(b)}})}function e(b,e){var j,k,g,i;j=b.getAttribute("data-ajax-confirm");if(j&&!window.confirm(j))return;k=a(b.getAttribute("data-ajax-loading"));i=b.getAttribute("data-ajax-loading-duration")||0;a.extend(e,{type:b.getAttribute("data-ajax-method")||undefined,url:b.getAttribute("data-ajax-url")||undefined,beforeSend:function(d){var a;f(d,g);a=c(b.getAttribute("data-ajax-begin"),["xhr"]).apply(this,arguments);a!==false&&k.show(i);return a},complete:function(){k.hide(i);c(b.getAttribute("data-ajax-complete"),["xhr","status"]).apply(this,arguments)},success:function(a,e,d){h(b,a,d.getResponseHeader("Content-Type")||"text/html");c(b.getAttribute("data-ajax-success"),["data","status","xhr"]).apply(this,arguments)},error:c(b.getAttribute("data-ajax-failure"),["xhr","status","error"])});e.data.push({name:"X-Requested-With",value:"XMLHttpRequest"});g=e.type.toUpperCase();if(!d(g)){e.type="POST";e.data.push({name:"X-HTTP-Method-Override",value:g})}a.ajax(e)}function i(c){var b=a(c).data(g);return!b||!b.validate||b.validate()}a("a[data-ajax=true]").live("click",function(a){a.preventDefault();e(this,{url:this.href,type:"GET",data:[]})});a("form[data-ajax=true] input[type=image]").live("click",function(c){var g=c.target.name,d=a(c.target),f=d.parents("form")[0],e=d.offset();a(f).data(b,[{name:g+".x",value:Math.round(c.pageX-e.left)},{name:g+".y",value:Math.round(c.pageY-e.top)}]);setTimeout(function(){a(f).removeData(b)},0)});a("form[data-ajax=true] :submit").live("click",function(c){var e=c.target.name,d=a(c.target).parents("form")[0];a(d).data(b,e?[{name:e,value:c.target.value}]:[]);setTimeout(function(){a(d).removeData(b)},0)});a("form[data-ajax=true]").live("submit",function(d){var c=a(this).data(b)||[];d.preventDefault();if(!i(this))return;e(this,{url:this.action,type:this.method||"GET",data:c.concat(a(this).serializeArray())})})})(jQuery);

318
Admi/Thumbs.aspx Normal file
View File

@ -0,0 +1,318 @@
<html class="adminStyle">
<head id="ctl00_Head1">
<meta id="ctl00_RenderingMode" http-equiv="X-UA-Compatible" content="IE=edge">
<title>
ROBLOX | Administration
</title>
<meta name="google-site-verification" content="alM52ZeUABx_edKTvoawL3_tQ4VVr49r7IjWdBFMKPA">
<link rel="stylesheet" href="/CSS/Base/CSS/Roblox.css">
<link rel="stylesheet" href="/CSS/RBXCommon.css">
<link rel="stylesheet" href="/CSS/Base/CSS/AccountBalance.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Admin.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Admin2.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Ads.css">
<link rel="stylesheet" href="/CSS/Base/CSS/AgeUpEmailVerifyPage.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Asset.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Badges.css">
<link rel="stylesheet" href="/CSS/Base/CSS/carouselpager.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Catalog.css">
<link rel="stylesheet" href="/CSS/Base/CSS/CharacterCustomization.css">
<link rel="stylesheet" href="/CSS/Base/CSS/CharacterSelectAndInstallInstructions.css">
<link rel="stylesheet" href="/CSS/Base/CSS/CommonForms.css">
<link rel="stylesheet" href="/CSS/Base/CSS/ContentAdapters.css">
<link rel="stylesheet" href="/CSS/Base/CSS/ContentBuilder.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Contest.css">
<link rel="stylesheet" href="/CSS/Base/CSS/CreditCardExpireModal.css">
<link rel="stylesheet" href="/CSS/Base/CSS/CuratedGames.css">
<link rel="stylesheet" href="/CSS/Base/CSS/CurrencyExchange.css">
<link rel="stylesheet" href="/CSS/Base/CSS/DarkGradientBox.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Frontpage.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Games.css">
<link rel="stylesheet" href="/CSS/Base/CSS/GenericModal.css">
<link rel="stylesheet" href="/CSS/Base/CSS/GroupRoleSetMembersPane.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Groups.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Help.css">
<link rel="stylesheet" href="/CSS/Base/CSS/IframeHeader.css">
<link rel="stylesheet" href="/CSS/Base/CSS/iFrameLogin.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Inbox.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Info.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Install.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Item.css">
<link rel="stylesheet" href="/CSS/Base/CSS/LandingGames.css">
<link rel="stylesheet" href="/CSS/Base/CSS/LinkInventory.css">
<link rel="stylesheet" href="/CSS/Base/CSS/ManageAccount.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Membership.css">
<link rel="stylesheet" href="/CSS/Base/CSS/MenuRedesign.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Message.css">
<link rel="stylesheet" href="/CSS/Base/CSS/MyAccount.css">
<link rel="stylesheet" href="/CSS/Base/CSS/MyMoney.css">
<link rel="stylesheet" href="/CSS/Base/CSS/NewCatalog.css">
<link rel="stylesheet" href="/CSS/Base/CSS/NewToolBox.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Parents.css">
<link rel="stylesheet" href="/CSS/Base/CSS/party.css">
<link rel="stylesheet" href="/CSS/Base/CSS/PersonalServerAccessPrivilegesRoleSet.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Place.css">
<link rel="stylesheet" href="/CSS/Base/CSS/PlaceLauncher.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Profile.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Q.css">
<link rel="stylesheet" href="/CSS/Base/CSS/RevisedCharacterSelectModal.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Sets.css">
<link rel="stylesheet" href="/CSS/Base/CSS/ShadowedStandardBox.css">
<link rel="stylesheet" href="/CSS/Base/CSS/ShareRoblox.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Signup.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Store.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Studio2Alert.css">
<link rel="stylesheet" href="/CSS/Base/CSS/StyleGuide.css">
<link rel="stylesheet" href="/CSS/Base/CSS/tipsy.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Toolbox.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Trade.css">
<link rel="stylesheet" href="/CSS/Base/CSS/UnifiedModal.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Upgrades.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Upload.css">
<link rel="stylesheet" href="/CSS/Base/CSS/User.css">
<link rel="stylesheet" href="/CSS/Base/CSS/Utility.css">
<link rel="stylesheet" href="/CSS/Base/CSS/VideoPreRoll.css">
<link rel="stylesheet" href="/CSS/RBX2/CSS/BuildersClub.css">
<link rel="stylesheet" href="/CSS/RBX2/CSS/Catalog.css">
<link rel="stylesheet" href="/CSS/RBX2/CSS/DarkGradientBox.css">
<link rel="stylesheet" href="/CSS/RBX2/CSS/Games.css">
<link rel="stylesheet" href="/CSS/RBX2/CSS/Inbox.css">
<link rel="stylesheet" href="/CSS/RBX2/CSS/Item.css">
<link rel="stylesheet" href="/CSS/RBX2/CSS/MyRoblox.css">
<link rel="stylesheet" href="/CSS/RBX2/CSS/Roblox.css">
<link rel="stylesheet" href="/CSS/RBX2/CSS/Upgrades.css">
<link rel="stylesheet" href="/CSS/RBX2/CSS/Utility.css">
<style type="text/css">
html, body {
height: 100%;
}
#master_container {
height: 100%;
}
#sidebar {
background: #eaeaea;
float: left;
height: 100%;
width: 196px;
line-height: 1.1;
border-right: solid 1px #000;
box-sizing: border-box;
}
.center {
display: block;
margin-left: auto;
margin-right: auto;
width: 50%;
}
.adminContent .spacer {
clear: unset;
}
/* ============= TEXT ============ */
.adminStyle h2 {
font-weight: bold;
font-size:12px;
color:#000;
padding-bottom: 0;
margin-bottom: 0;
/*padding-bottom:5px;
margin-bottom:14px;*/
border-bottom:1px solid #e1eaf3;
}
.adminStyle h2.highlight {
font-weight: bold;
font-size:12px;
color:#1a773b;
padding-bottom: 0;
margin: 0;
/*padding-bottom:5px;
margin:30px 0 5px 0;*/
border-bottom:1px solid #e1eaf3;
}
.adminStyle h3 {
font-size:11px;
font-weight: bold;
color:#000;
margin: 0;
/*margin-top:30px;*/
}
.adminStyle h3.less_air {
font-size:11px;
font-weight: bold;
color:#000;
margin: 0;
/*margin:0 0 4px 0;*/
padding:0;
}
.adminStyle h4 {
font-size:10px;
font-weight: bold;
color:#000;
margin: 0;
padding: 0;
/*margin:15px 0 4px 0;
padding:0 0 2px 0;*/
border-bottom:1px solid #e1eaf3;
}
</style>
<link rel="icon" type="image/vnd.microsoft.icon" href="/favicon.ico">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-us">
<meta name="author" content="ROBLOX Corporation">
<meta id="ctl00_metadescription" name="description" content="User-generated MMO gaming site for kids, teens, and adults. Players architect their own worlds. Builders create free online games that simulate the real world. Create and play amazing 3D games. An online gaming cloud and distributed physics engine.">
<meta id="ctl00_metakeywords" name="keywords" content="free games, online games, building games, virtual worlds, free mmo, gaming cloud, physics engine">
<script type="text/javascript" async="" src="https://ssl.google-analytics.com/ga.js"></script><script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-11419793-1']);
_gaq.push(['_setCampSourceKey', 'rbx_source']);
_gaq.push(['_setCampMediumKey', 'rbx_medium']);
_gaq.push(['_setCampContentKey', 'rbx_campaign']);
_gaq.push(['b._setAccount', 'UA-486632-1']);
_gaq.push(['b._setCampSourceKey', 'rbx_source']);
_gaq.push(['b._setCampMediumKey', 'rbx_medium']);
_gaq.push(['b._setCampContentKey', 'rbx_campaign']);
_gaq.push(['c._setAccount', 'UA-26810151-2']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body class="pageStyle">
<div id="master_container">
<div id="sidebar">
<div style="padding-left: 11px;">
<div style="padding-right: 11px; padding-top: 11px;">
<div class="logo_spacer" style="width: auto; height: 50px; padding-right: 4px;">
<a href="/" style="
display: block;
margin-left: auto;
margin-right: auto;
width: 106px;
height: 28px;
">
<img width="106px" height="28px" src="/Images/roblox_logo.png">
</a>
</div>
<div>
<div>
<div>
<a>Configs</a> | <a>Machines</a>: <b>99</b>% of <b>1346</b>
</div>
<div>
<a>Cores</a>: <b>69</b>% in use of <b>6466</b>
</div>
<div>
<b>4529</b> running, <b>0</b> waiting
</div>
<div>
<b>19715</b> <a>players</a> in <b>4721</b> <a>games</a> (<b>4.7:1</b>)
</div>
<div>
<b>7</b> <a>thumb requests</a>
</div>
</div>
<div>
<hr>
<div>
<h6><b>11</b> <a>abuse reports</a>, </h6>
<h6><b>44</b> <a>images</a>, </h6>
<h6><b>5</b> <a>videos</a>, </h6>
<h6><b>74</b> <a>users</a></h6>
</div>
<div>
<a href="/">Roblox</a>, <a>FindUser</a>
</div>
</div>
</div>
</div>
<div style="padding-right: 2px;">
<hr>
<div style="padding-right: 6px;">
<div>
<a>Change Theme</a>
</div>
<div>
<a>RBX1</a> <a>RBX2</a> <a>RBX3</a> <a>OBC1</a> <a>OBC2</a>
</div>
</div>
</div>
<div class="right "style="padding-right: 10px; width:100%; text-align:right;">
<a class="highlight">Stop Chat</a>&nbsp;&nbsp;&nbsp; <a class="highlight">Pause Polling</a>
</div>
</div>
<div style="margin-top:28px;">
<ul style="overflow:hidden; overflow-y:scroll; width:auto;">
<li><a>Admin Dashboard</a></li>
</ul>
</div>
</div>
<div style="margin-left: 196px;">
<div class="Panel" style="
padding-top: 10px;
border: none;
">
<div class="adminContent" style="
margin-top: 0;
padding-top: 1.6em;
">
<p>Thumbnail Request Count: 2</p>
<p>Total Count: 0</p>
<p>Thumbnail Blacklist Count: 0</p>
<div class="spacer"></div>
<p>Failure Rate: NaN%&nbsp;&nbsp;Timeout Rate: NaN%</p>
<button>
Clear Blacklist
</button>
<!--div>
<h3>Very Epic Administration Buttons</h3>
<div class="panel_buttons">
<div class="button_small_gray">
<span class="button_small_gray_left"></span><span class="button_small_gray_content">
Gray
</span><span class="button_small_gray_right"></span>
</div>
<div class="button_blue">
<span class="button_blue_left"></span><span class="button_blue_content">
Blue
</span><span class="button_blue_right"></span>
</div>
<div class="button_black">
<span class="button_black_left"></span><span class="button_black_content">
Black
</span><span class="button_black_right"></span>
</div>
<div class="button_gray">
<span class="button_gray_left"></span><span class="button_gray_content">
Gray
</span><span class="button_gray_right"></span>
</div>
<div class="button_glossy">
<span class="button_glossy_left"></span><span class="button_glossy_content">
Glossy
</span><span class="button_glossy_right"></span>
</div>
</div>
</div-->
</div>
</div>
</div>
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1,116 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript" src="/UnsecureContent/js/jquery-1.7.2.min.js"></script>
</head>
<body>
<object id="robloxpluginobj" type="application/x-vnd-roblox-launcher"><p>You need Our Plugin for this. Get the latest version from<a href="setup-sitetest.roblox.com">here</a>.</p></object>
<p><input type="text" size="20" id="placeID" value="91388704" /></p>
<input type="button" value="Get game URLs" onclick="getGameUrls();" />
<input type="button" value="Start game normal" onclick="startGameNormal();" />
<input type="button" value="Set game hidden" id="setGameHidden" onclick="setGameHidden();"/>
<input type="button" value="Show hidden game" id="showHiddenGame" onclick="showHiddenGame();"/>
<input type="button" value="Get game started status" onclick="getGameStarted()" />
<p>Game request status: <span id="gameReqStatus">No game req.</span></p>
<p>Game started status: <span id="gameStartedStatus">Unknown</span></p>
<script type="text/javascript">
var visitUrl = "";
var authenticationUrl = "http://sitetest2.roblox.com/Login/Negotiate.ashx";
var launcher = document.getElementById("robloxpluginobj");
function el(e) { return document.getElementById(e); };
function getGameUrls() {
//launcher.PreStartGame();
el("gameReqStatus").innerHTML = "Starting request...";
RequestGame(el("placeID").value, false, null)
}
function RequestGame(placeId, isPartyLeader, gender) {
gender = (gender !== null && gender !== undefined) ? gender : "";
$.getJSON("/Game/PlaceLauncher.ashx",
{ request: "RequestGame", placeId: placeId, isPartyLeader: isPartyLeader, gender: gender },
function (data) {
if (data.Error) {
el("gameReqStatus").innerHTML = data.Error.toString();
}
else {
CheckGameJobStatusResponse(data);
}
});
}
function CheckGameJobStatus(jobId) {
$.getJSON("/Game/PlaceLauncher.ashx",
{ request: "CheckGameJobStatus", jobId: jobId },
function (data) {
if (data.Error) {
el("gameReqStatus").innerHTML = data.Error.toString();
}
else {
CheckGameJobStatusResponse(data);
}
});
}
function CheckGameJobStatusResponse(result) {
if (result.status === 2) {
visitUrl = result.joinScriptUrl;
authenticationUrl = result.authenticationUrl;
el("gameReqStatus").innerHTML = "Game is ready, <br>visit url=" + visitUrl + "<br>auth url=" + authenticationUrl;
//RobloxLaunch.StartGame(result.joinScriptUrl, "Join", result.authenticationUrl, result.authenticationTicket);
//$.modal.close();
//report length of time between click of join and successfully joining a game.
//var s_duration = new Date().getTime() - RobloxLaunch.timer.getTime();
//this._reportDuration(s_duration, "Success");
}
else if (result.status < 2 || result.status === 6) {
// Try again
el("gameReqStatus").innerHTML = "Game is not ready. Retrying...";
//var onSuccess = function (result, context) { context._onGameStatus(result); };
//var onError = function (result, context) { context._onGameError(result); };
//var self = this;
var call = function () {
CheckGameJobStatus(result.jobId);
};
window.setTimeout(call, 2000);
} else if (result.status === 4) { //error
//report length of time between click of join and failed joining a game.
//var f_duration = new Date().getTime() - RobloxLaunch.timer.getTime();
//this._reportDuration(f_duration, "Failure");
el("gameReqStatus").innerHTML = "Got back a 4, failure. :-(";
}
}
function startGameNormal() {
launcher.SetSilentModeEnabled(true);
launcher.StartGame(authenticationUrl, visitUrl);
}
function setGameHidden() {
launcher.SetStartInHiddenMode(true);
el("setGameHidden").disabled = true;
el("setGameHidden").value = "Game will start hidden";
}
function showHiddenGame() {
setInterval("launcher.UnhideApp();", 200);
}
function getGameStarted() {
var started = false;
if (window.ActiveXObject) {
started = launcher.IsGameStarted;
} else {
started = launcher.Get_GameStarted();
}
el("gameStartedStatus").innerHTML = started.toString();
}
</script>
</body>
</html>

View File

@ -0,0 +1,117 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript" src="/UnsecureContent/js/jquery-1.7.2.min.js"></script>
</head>
<body>
<!--<object id="robloxpluginobj" type="application/x-vnd-roblox-launcher"><p>You need Our Plugin for this. Get the latest version from<a href="setup-sitetest.roblox.com">here</a>.</p></object>-->
<object classid="clsid:76D50904-6780-4c8b-8986-1A7EE0B1716D" id="robloxpluginobj" type="application/x-vnd-roblox-launcher" codebase="setup-sitetest.roblox.com">Failed to INIT Plugin</object>
<p><input type="text" size="20" id="placeID" value="91388704" /></p>
<input type="button" value="Get game URLs" onclick="getGameUrls();" />
<input type="button" value="Start game normal" onclick="startGameNormal();" />
<input type="button" value="Set game hidden" id="setGameHidden" onclick="setGameHidden();"/>
<input type="button" value="Show hidden game" id="showHiddenGame" onclick="showHiddenGame();"/>
<input type="button" value="Get game started status" onclick="getGameStarted()" />
<p>Game request status: <span id="gameReqStatus">No game req.</span></p>
<p>Game started status: <span id="gameStartedStatus">Unknown</span></p>
<script type="text/javascript">
var visitUrl = "";
var authenticationUrl = "http://sitetest2.roblox.com/Login/Negotiate.ashx";
var launcher = document.getElementById("robloxpluginobj");
function el(e) { return document.getElementById(e); };
function getGameUrls() {
//launcher.PreStartGame();
el("gameReqStatus").innerHTML = "Starting request...";
RequestGame(el("placeID").value, false, null)
}
function RequestGame(placeId, isPartyLeader, gender) {
gender = (gender !== null && gender !== undefined) ? gender : "";
$.getJSON("/Game/PlaceLauncher.ashx",
{ request: "RequestGame", placeId: placeId, isPartyLeader: isPartyLeader, gender: gender },
function (data) {
if (data.Error) {
el("gameReqStatus").innerHTML = data.Error.toString();
}
else {
CheckGameJobStatusResponse(data);
}
});
}
function CheckGameJobStatus(jobId) {
$.getJSON("/Game/PlaceLauncher.ashx",
{ request: "CheckGameJobStatus", jobId: jobId },
function (data) {
if (data.Error) {
el("gameReqStatus").innerHTML = data.Error.toString();
}
else {
CheckGameJobStatusResponse(data);
}
});
}
function CheckGameJobStatusResponse(result) {
if (result.status === 2) {
visitUrl = result.joinScriptUrl;
authenticationUrl = result.authenticationUrl;
el("gameReqStatus").innerHTML = "Game is ready, <br>visit url=" + visitUrl + "<br>auth url=" + authenticationUrl;
//RobloxLaunch.StartGame(result.joinScriptUrl, "Join", result.authenticationUrl, result.authenticationTicket);
//$.modal.close();
//report length of time between click of join and successfully joining a game.
//var s_duration = new Date().getTime() - RobloxLaunch.timer.getTime();
//this._reportDuration(s_duration, "Success");
}
else if (result.status < 2 || result.status === 6) {
// Try again
el("gameReqStatus").innerHTML = "Game is not ready. Retrying...";
//var onSuccess = function (result, context) { context._onGameStatus(result); };
//var onError = function (result, context) { context._onGameError(result); };
//var self = this;
var call = function () {
CheckGameJobStatus(result.jobId);
};
window.setTimeout(call, 2000);
} else if (result.status === 4) { //error
//report length of time between click of join and failed joining a game.
//var f_duration = new Date().getTime() - RobloxLaunch.timer.getTime();
//this._reportDuration(f_duration, "Failure");
el("gameReqStatus").innerHTML = "Got back a 4, failure. :-(";
}
}
function startGameNormal() {
launcher.SetSilentModeEnabled(true);
launcher.StartGame(authenticationUrl, visitUrl);
}
function setGameHidden() {
launcher.SetStartInHiddenMode(true);
el("setGameHidden").disabled = true;
el("setGameHidden").value = "Game will start hidden";
}
function showHiddenGame() {
setInterval("launcher.UnhideApp();", 200);
}
function getGameStarted() {
var started = false;
if (window.ActiveXObject) {
started = launcher.IsGameStarted;
} else {
started = launcher.Get_GameStarted();
}
el("gameStartedStatus").innerHTML = started.toString();
}
</script>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 728 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 602 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 648 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -0,0 +1,108 @@
.GenericModal .Title, .ConfirmationModal .Title{
font-family:Arial, Helvetica, Sans-Serif;
font-weight:bold;
font-size:27px;
color:#363636;
margin: 5px;
letter-spacing: -1px;
}
.GenericModal {
padding: 5px;
*top: -150px;
}
.GenericModalBody {
background-color:#fff;
padding:10px
}
.GenericModal .Message, .ConfirmationModal .Message {
display:inline-block;
width:275px;
vertical-align:middle;
font:bold 15px Arial,Helvetica,Sans-Serif;
letter-spacing: 0;
font-size-adjust: none;
font-stretch: normal;
margin-bottom: 5px;
}
.GenericModal div.ImageContainer {
display:inline-block;
height:110px;
width:110px;
overflow:hidden;
vertical-align:middle;
margin-left: -15px;
*float: left;
*margin-left: 0px;
}
.GenericModal img.GenericModalImage {
display:inline-block;
max-height:110px;
max-width:110px
}
.GenericModal .GenericModalButtonContainer {
text-align:center;
margin: 5px auto;
*margin-top: 115px;
}
.largeModal .GenericModalBody {
position: relative;
}
.largeModal div.ImageContainer {
position: absolute;
left: 35px;
top: 50%;
margin-top: -55px;
}
div.GenericModalErrorMessage {
background-color: #FAE5E5;
border: 1px solid #C00;
font-size: 12px;
font-weight: normal;
text-align: left;
padding: 5px;
margin: 0 5px;
}
.ConfirmationModal .BlueYes {
background: url("/images/Buttons/blue_yes.png") top;
width: 100px;
}
.ConfirmationModal .BlueNo {
background: url("/images/Buttons/blue_no.png") top;
width: 106px;
}
.ConfirmationModal .GreyYes {
background: url("/images/Buttons/grey_yes.png") top;
width: 112px;
}
.ConfirmationModal .GreyNo {
background: url("/images/Buttons/grey_no.png") top;
width: 100px;
}
.ConfirmationModal .GreyNo, .ConfirmationModal .GreyYes, .ConfirmationModal .BlueYes, .ConfirmationModal .BlueNo {
height: 50px;
display: inline-block;
}
.GenericModal .GreyNo:hover, .GenericModal .GreyYes:hover, .GenericModal .BlueNo:hover, .GenericModal .BlueYes:hover {
background-position: bottom;
}
.ConfirmationModalButtonContainer {
text-align: center;
}
.ConfirmationModal .Message {
min-height: 30px;
width: 100%;
margin: 10px auto;
text-align: center;
}
div.ConfirmationModal div.GenericModalBody {
padding: 5px;
}

6805
Admi/UnsecureContent/css/bootstrap.css vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,158 @@
.SquareTabGray
{
list-style: none;
float: left;
background-color: #D6D6D6;
padding:7px;
border: 1px solid #9e9e9e;
font: bold 15px arial;
color: #363636;
margin: 4px 2px 0px 1px;
border-bottom-width:0px;
position:relative;
top:2px;
}
.SquareTabGray a
{
text-decoration:none;
color:#363636;
cursor:pointer;
}
.SquareTabGray a:hover
{
text-decoration:none;
background-color:#e9e9e9;
}
.SquareTabGray.selected a:hover,.SquareTabGray.ui-tabs-selected a:hover
{
text-decoration:none;
background-color:#FCFCFC;
}
.SquareTabGray:hover
{
background-color:#e9e9e9;
cursor:pointer;
}
.SquareTabGray.selected,.SquareTabGray.selected:hover,.SquareTabGray.ui-tabs-selected,.SquareTabGray.ui-tabs-selected:hover
{
background-color:#FCFCFC;
margin-top:0px;
padding:9px 7px 12px 7px;
position:relative;
top:1px;
border-bottom:1px solid #ccc;
border-bottom:1px solid #FCFCFC;
}
.TabContent {
display: none;
}
.TabContent.selected {
display: block;
}
.StandardPanelContainer
{
position: relative;
clear: both;
padding-left: 5px;
}
.StandardPanelContainer .StandardPanelWhite
{
position: relative;
left: -5px;
top: -1px;
width: 100%;
padding:6px;
margin-bottom: -6px;
}
.WhiteSquareTabsContainer
{
background:url('/unsecurecontent/images/fakeborder.png') bottom repeat-x;
width:100%;
position: relative;
padding: 0 0 0 5px;
display:inline-block;
margin: 0;
}
.SquareTabGray {
list-style: none;
float: left;
background-color: #D6D6D6;
padding: 7px;
border: 1px solid #9E9E9E;
font: bold 15px arial;
color: #363636;
margin: 4px 2px 0 1px;
border-bottom-width: 0;
position: relative;
top: 2px;
}
/*Modal Popup*/
.modalBackground
{
background-color: Gray;
filter: alpha(opacity=30);
opacity: 0.3;
}
.modalPopup
{
background-color: #ffffdd;
border-width: 3px;
border-style: solid;
border-color: Gray;
padding: 3px;
}
.simplemodal-container {
top: 200px !important;
}
.ImageButton
{
cursor: pointer;
padding: 0;
border: 0;
text-decoration: none;
margin: 0;
display:inline-block;
}
.btn-submit
{
height:50px;
width:134px;
border:0;
padding:0;
cursor:pointer;
background: url(/unsecurecontent/images/btn-submit.png);
}
.btn-submit:hover
{
background-position:0 -50px;
cursor:pointer;
}
.btn-cancel
{
width: 96px;
height: 50px;
background: url(/unsecurecontent/images/btn-cancel.png) no-repeat;
}
.btn-cancel:hover
{
background-position: 0px -50px;
}
.StandardDividerTop {
border-top: 1px solid #ccc;
}
.StandardDividerBottom {
border-bottom: 1px solid #ccc;
}
.StandardDividerLeft {
border-left: 1px solid #ccc;
}
.StandardDividerRight {
border-right: 1px solid #ccc;
}

View File

@ -0,0 +1,388 @@
div.adminDash
{
color:#585858;
}
body
{
font-family:Arial,Helvetica,sans-serif;
font-size:13px;
background: #FCFCFC;
margin: 0;
}
div.header
{
margin:0 0 10px;
background: #F0F0F0;
text-align: right;
padding: 5px;
border-top: 2px solid #3679BC;
height: 18px;
}
a
{
color: #095fb5;
text-decoration: none;
}
a:hover
{
text-decoration: underline;
}
div.ContentPaneFloat
{
float:left;
padding-left: 230px;
min-height:500px;
}
div.NavigationPaneFloat
{
position:absolute;
width:200px;
border-right: 1px solid #F0F0F0;
}
div.NavigationPaneFloat .navSection
{
padding-left:10px;
}
div.NavigationPaneFloat ul
{
margin:0px;
margin-bottom:10px;
}
div.navHeader
{
border-bottom: 1px solid #DDD;
margin-bottom: 10px;
margin-top: 15px;
padding-left: 10px;
color: #4D4D4D;
font-weight: bold;
font-size: 15px;
}
h1
{
margin-top:35px;
margin-bottom:12px;
font-size: 40px;
font-weight: bold;
color:#363636;
letter-spacing:-2px;
}
h2
{
font-size:16px;
font-weight:bold;
text-transform: uppercase;
color:#000;
}
/* Legacy */
.StandardTabWhite,
.StandardTabGrayActive,
.StandardTabGray
{
display:inline-block;
height:26px;
z-index: 2;
position:relative;
*display:inline;
*zoom:1;
}
.StandardTabWhite span
{
*padding-right:14px;
}
.StandardTabGray
{
background-color: #b4cde9;
margin-right: 4px;
}
li.ConfigTabs
{
padding: 6px 10px 0px 10px;
}
.StandardTabGrayActive
{
margin-right: 4px;
}
.StandardTabGray a,
.StandardTabGrayActive a
{
color: White;
}
.StandardTabGray a:hover,
.StandardTabGrayActive a:hover
{
text-decoration:none;
}
.StandardTabGray:hover,
.StandardTabGrayActive
{
background-color: #6c98cb;
color: White;
}
div.Signin
{
margin: 0 auto;
width: 198px;
margin-top: 150px;
color: #666;
}
div.Signin .formRow
{
margin-bottom: 5px;
}
div.Signin .formRow label
{
display: block;
}
div.Signin .formRow input
{
border: 1px solid #999;
padding: 3px;
width: 190px;
}
div.Signin .formRowSubmit
{
text-align: right;
margin-top: 12px;
}
div.Signin .formRowSubmit input
{
border: 1px solid #999;
padding: 3px 6px;
border-radius: 3px;
margin: 0;
}
div.Signin .formRowSubmit input:hover
{
cursor: pointer;
background: white;
color: #666;
}
div.header div.headerFloatLeft
{
float:left;
}
div.header div.headerFloatRight
{
float:right;
}
div#recaptcha_area
{
margin: 0 auto;
margin-left: -40px;
}
/* mvc pages */
#GroupName {
width: 400px;
height: 20px;
}
#NamePattern {
width: 396px;
}
#messageDiv {
display: none;
}
/* div containing lists of settings, maybe populated with ajax */
.resultsContainer {
margin-top: 20px;
}
.settingsTableCaption {
padding: 3px;
}
.settingsTable
{
border-collapse: collapse;
font-size: 12px;
}
.settingsTable td {
white-space: nowrap;
}
.settingsTable td div
{
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* actions column -> anchor */
.settingsTable .a a
{
color: #095fb5;
}
/* name column */
.settingsTable .n
{
width: 250px;
}
/* value column */
.settingsTable .v
{
width: 300px;
}
/* secret value */
.settingsTable .v span
{
color: red;
}
/* connection string */
.settingsTable .cs
{
width: 400px;
}
/* comment column */
.settingsTable .c {
width: 280px;
}
/* group column in connection strings */
.settingsTable .g {
width: 300px;
}
/* group column trimmed */
.settingsTable .gt {
width: 170px;
}
/* type column */
.settingsTable .t {
width: 110px;
}
.settingsTable td,
.settingsTable th {
border: 1px solid #999999;
}
.settingsTable td {
padding: 4px;
}
.settingsTable th {
padding: 5px 4px;
color: black;
}
.settingsTable tr:hover {
background-color: #DDDDDD
}
.configDialog {
display: none;
}
.configDialog input[type=text] {
width: 400px;
}
/* Styles for validation helpers
-----------------------------------------------------------*/
.field-validation-error
{
color: #ff0000;
}
.field-validation-valid
{
display: none;
}
.input-validation-error
{
border: 1px solid #ff0000 !important;
background-color: #ffeeee;
}
.validation-summary-errors
{
font-weight: bold;
color: #ff0000;
}
.validation-summary-valid
{
display: none;
}
/** styles for services config pages begin ***/
.authorization-column span,
.authorization-column a {
width: 50px;
display: inline-block;
text-align: center;
}
.authorization-column span.selected {
font-weight: bold;
background-color: #EDEDED;
border-radius: 4px;
}
/** styles for services config pages end ***/
/*** client settings beging ***/
#client-settings label {
display: block;
}
#client-settings .add-top-margin {
margin-top: 20px;
}
#client-settings #status-message {
margin-left: 5px;
}
#client-settings input#setting-key {
width: 602px;
margin-bottom: 10px;
display: block;
}
#client-settings textarea {
width: 600px;
height: 350px;
margin-bottom: 10px;
display: block;
margin-top: 2px;
}
#client-settings table {
border-spacing: 0;
}
#client-settings table td {
padding: 0;
vertical-align: top;
}
/*** client settings end ***/
/*** regex start ***/
a.edit-regex-link {
margin-right: 10px;
}
/*** regex ends ***/

View File

@ -0,0 +1,20 @@
$(function () {
var minScale = $("#MarketingBoostPanel").data('mincale');
var maxScale = $("#MarketingBoostPanel").data('maxscale');
var currentValue = $("#BoostAmountScale").val();
$("#slider").slider({
value: currentValue,
min: minScale,
max: maxScale,
step: 1,
slide: function (event, ui) {
$("#BoostAmountScale").val(ui.value);
}
});
$("#BoostAmountScale").val($("#slider").slider("value"));
$("#ReleaseDate").bind('blur keyup change', (function () {
var startDate = $(this).val();
$("#BoostStartDate").val(startDate);
$("#BoostEndDate").val("");
}));
});

View File

@ -0,0 +1,41 @@
if (typeof GenericModal === "undefined") {
GenericModal = function () {
var modalProperties = {
overlayClose: true,
escClose: true,
opacity: 80,
overlayCss: {
backgroundColor: "#000"
}
};
var _CloseCallBack;
$(function () {
$('.GenericModal .btn-submit').click(function () {
close();
});
});
function open(title, imageURL, message, closeCallBack, isLarge) {
_CloseCallBack = closeCallBack;
var modal = $('div.GenericModal').filter(':first');
modal.find('div.Title').text(title);
modal.find('img.GenericModalImage').attr('src', imageURL);
modal.find('div.Message').html(message);
if (isLarge) {
modal.removeClass('smallModal');
modal.addClass('largeModal');
}
modal.modal(modalProperties);
}
function close() {
$.modal.close();
if (typeof _CloseCallBack === 'function') {
_CloseCallBack();
}
}
return {
open: open
};
} ();
}

1999
Admi/UnsecureContent/js/bootstrap.js vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

19
Admi/UnsecureContent/js/jquery.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,624 @@
/*
* SimpleModal 1.3.5 - jQuery Plugin
* http://www.ericmmartin.com/projects/simplemodal/
* Copyright (c) 2010 Eric Martin (http://twitter.com/EricMMartin)
* Dual licensed under the MIT and GPL licenses
* Revision: $Id: jquery.simplemodal.js 245 2010-03-25 20:41:15Z emartin24 $
*/
/**
* SimpleModal is a lightweight jQuery plugin that provides a simple
* interface to create a modal dialog.
*
* The goal of SimpleModal is to provide developers with a cross-browser
* overlay and container that will be populated with data provided to
* SimpleModal.
*
* There are two ways to call SimpleModal:
* 1) As a chained function on a jQuery object, like $('#myDiv').modal();.
* This call would place the DOM object, #myDiv, inside a modal dialog.
* Chaining requires a jQuery object. An optional options object can be
* passed as a parameter.
*
* @example $('<div>my data</div>').modal({options});
* @example $('#myDiv').modal({options});
* @example jQueryObject.modal({options});
*
* 2) As a stand-alone function, like $.modal(data). The data parameter
* is required and an optional options object can be passed as a second
* parameter. This method provides more flexibility in the types of data
* that are allowed. The data could be a DOM object, a jQuery object, HTML
* or a string.
*
* @example $.modal('<div>my data</div>', {options});
* @example $.modal('my data', {options});
* @example $.modal($('#myDiv'), {options});
* @example $.modal(jQueryObject, {options});
* @example $.modal(document.getElementById('myDiv'), {options});
*
* A SimpleModal call can contain multiple elements, but only one modal
* dialog can be created at a time. Which means that all of the matched
* elements will be displayed within the modal container.
*
* SimpleModal internally sets the CSS needed to display the modal dialog
* properly in all browsers, yet provides the developer with the flexibility
* to easily control the look and feel. The styling for SimpleModal can be
* done through external stylesheets, or through SimpleModal, using the
* overlayCss and/or containerCss options.
*
* SimpleModal has been tested in the following browsers:
* - IE 6, 7, 8
* - Firefox 2, 3
* - Opera 9, 10
* - Safari 3, 4
* - Chrome 1, 2, 3, 4
*
* @name SimpleModal
* @type jQuery
* @requires jQuery v1.2.2
* @cat Plugins/Windows and Overlays
* @author Eric Martin (http://ericmmartin.com)
* @version 1.3.5
*/
;(function ($) {
var ie6 = $.browser.msie && parseInt($.browser.version) == 6 && typeof window['XMLHttpRequest'] != "object",
ieQuirks = false,
w = [];
/*
* Stand-alone function to create a modal dialog.
*
* @param {string, object} data A string, jQuery object or DOM object
* @param {object} [options] An optional object containing options overrides
*/
$.modal = function (data, options) {
return $.modal.impl.init(data, options);
};
/*
* Stand-alone close function to close the modal dialog
*/
$.modal.close = function () {
$.modal.impl.close();
};
/*
* Chained function to create a modal dialog.
*
* @param {object} [options] An optional object containing options overrides
*/
$.fn.modal = function (options) {
return $.modal.impl.init(this, options);
};
/*
* SimpleModal default options
*
* appendTo: (String:'body') The jQuery selector to append the elements to. For ASP.NET, use 'form'.
* focus: (Boolean:true) Forces focus to remain on the modal dialog
* opacity: (Number:50) The opacity value for the overlay div, from 0 - 100
* overlayId: (String:'simplemodal-overlay') The DOM element id for the overlay div
* overlayCss: (Object:{}) The CSS styling for the overlay div
* containerId: (String:'simplemodal-container') The DOM element id for the container div
* containerCss: (Object:{}) The CSS styling for the container div
* dataId: (String:'simplemodal-data') The DOM element id for the data div
* dataCss: (Object:{}) The CSS styling for the data div
* minHeight: (Number:null) The minimum height for the container
* minWidth: (Number:null) The minimum width for the container
* maxHeight: (Number:null) The maximum height for the container. If not specified, the window height is used.
* maxWidth: (Number:null) The maximum width for the container. If not specified, the window width is used.
* autoResize: (Boolean:false) Resize container on window resize? Use with caution - this may have undesirable side-effects.
* autoPosition: (Boolean:true) Automatically position container on creation and window resize?
* zIndex: (Number: 1000) Starting z-index value
* close: (Boolean:true) If true, closeHTML, escClose and overClose will be used if set.
If false, none of them will be used.
* closeHTML: (String:'<a class="modalCloseImg" title="Close"></a>') The HTML for the
default close link. SimpleModal will automatically add the closeClass to this element.
* closeClass: (String:'simplemodal-close') The CSS class used to bind to the close event
* escClose: (Boolean:true) Allow Esc keypress to close the dialog?
* overlayClose: (Boolean:false) Allow click on overlay to close the dialog?
* position: (Array:null) Position of container [top, left]. Can be number of pixels or percentage
* persist: (Boolean:false) Persist the data across modal calls? Only used for existing
DOM elements. If true, the data will be maintained across modal calls, if false,
the data will be reverted to its original state.
* modal: (Boolean:true) If false, the overlay, iframe, and certain events will be disabled
allowing the user to interace with the page below the dialog
* onOpen: (Function:null) The callback function used in place of SimpleModal's open
* onShow: (Function:null) The callback function used after the modal dialog has opened
* onClose: (Function:null) The callback function used in place of SimpleModal's close
*/
$.modal.defaults = {
appendTo: 'body',
focus: true,
opacity: 50,
overlayId: 'simplemodal-overlay',
overlayCss: {},
containerId: 'simplemodal-container',
containerCss: {},
dataId: 'simplemodal-data',
dataCss: {},
minHeight: null,
minWidth: null,
maxHeight: null,
maxWidth: null,
autoResize: false,
autoPosition: true,
zIndex: 10000,
close: true,
closeHTML: '<a class="modalCloseImg" title="Close"></a>',
closeClass: 'simplemodal-close',
escClose: true,
overlayClose: false,
position: null,
persist: false,
modal: true,
onOpen: null,
onShow: null,
onClose: null
};
/*
* Main modal object
*/
$.modal.impl = {
/*
* Modal dialog options
*/
o: null,
/*
* Contains the modal dialog elements and is the object passed
* back to the callback (onOpen, onShow, onClose) functions
*/
d: {},
/*
* Initialize the modal dialog
*/
init: function (data, options) {
var s = this;
// don't allow multiple calls
if (s.d.data) {
return false;
}
// $.boxModel is undefined if checked earlier
//ieQuirks = $.browser.msie && !$.boxModel;
// merge defaults and user options
s.o = $.extend({}, $.modal.defaults, options);
// keep track of z-index
s.zIndex = s.o.zIndex;
// set the onClose callback flag
s.occb = false;
// determine how to handle the data based on its type
if (typeof data == 'object') {
// convert DOM object to a jQuery object
data = data instanceof jQuery ? data : $(data);
s.d.placeholder = false;
// if the object came from the DOM, keep track of its parent
if (data.parent().parent().size() > 0) {
data.before($('<span></span>')
.attr('id', 'simplemodal-placeholder')
.css({display: 'none'}));
s.d.placeholder = true;
s.display = data.css('display');
// persist changes? if not, make a clone of the element
if (!s.o.persist) {
s.d.orig = data.clone(true);
}
}
}
else if (typeof data == 'string' || typeof data == 'number') {
// just insert the data as innerHTML
data = $('<div></div>').html(data);
}
else {
// unsupported data type!
alert('SimpleModal Error: Unsupported data type: ' + typeof data);
return s;
}
// create the modal overlay, container and, if necessary, iframe
s.create(data);
data = null;
// display the modal dialog
s.open();
// useful for adding events/manipulating data in the modal dialog
if ($.isFunction(s.o.onShow)) {
s.o.onShow.apply(s, [s.d]);
}
// don't break the chain =)
return s;
},
/*
* Create and add the modal overlay and container to the page
*/
create: function (data) {
var s = this;
// get the window properties
w = s.getDimensions();
// add an iframe to prevent select options from bleeding through
if (s.o.modal && ie6) {
s.d.iframe = $('<iframe src="javascript:false;"></iframe>')
.css($.extend(s.o.iframeCss, {
display: 'none',
opacity: 0,
position: 'fixed',
height: w[0],
width: w[1],
zIndex: s.o.zIndex,
top: 0,
left: 0
}))
.appendTo(s.o.appendTo);
}
// create the overlay
s.d.overlay = $('<div></div>')
.attr('id', s.o.overlayId)
.addClass('simplemodal-overlay')
.css($.extend(s.o.overlayCss, {
display: 'none',
opacity: s.o.opacity / 100,
height: s.o.modal ? w[0] : 0,
width: s.o.modal ? w[1] : 0,
position: 'fixed',
left: 0,
top: 0,
zIndex: s.o.zIndex + 1
}))
.appendTo(s.o.appendTo);
// create the container
s.d.container = $('<div></div>')
.attr('id', s.o.containerId)
.addClass('simplemodal-container')
.css($.extend(s.o.containerCss, {
display: 'none',
position: 'fixed',
zIndex: s.o.zIndex + 2
}))
.append(s.o.close && s.o.closeHTML
? $(s.o.closeHTML).addClass(s.o.closeClass)
: '')
.appendTo(s.o.appendTo);
s.d.wrap = $('<div></div>')
.attr('tabIndex', -1)
.addClass('simplemodal-wrap')
.css({height: '100%', outline: 0, width: '100%', overflow:'visible'})
.appendTo(s.d.container);
// add styling and attributes to the data
// append to body to get correct dimensions, then move to wrap
s.d.data = data
.attr('id', data.attr('id') || s.o.dataId)
.addClass('simplemodal-data')
.css($.extend(s.o.dataCss, {
display: 'none'
}))
.appendTo('body');
data = null;
s.setContainerDimensions();
s.d.data.appendTo(s.d.wrap);
// fix issues with IE
if (ie6) {
s.fixIE();
}
},
/*
* Bind events
*/
bindEvents: function () {
var s = this;
// bind the close event to any element with the closeClass class
$('.' + s.o.closeClass).bind('click.simplemodal', function (e) {
e.preventDefault();
s.close();
});
// bind the overlay click to the close function, if enabled
if (s.o.modal && s.o.close && s.o.overlayClose) {
s.d.overlay.bind('click.simplemodal', function (e) {
e.preventDefault();
s.close();
});
}
// bind keydown events
$(document).bind('keydown.simplemodal', function (e) {
if (s.o.modal && s.o.focus && e.keyCode == 9) { // TAB
s.watchTab(e);
}
else if ((s.o.close && s.o.escClose) && e.keyCode == 27) { // ESC
e.preventDefault();
s.close();
}
});
// update window size
$(window).bind('resize.simplemodal', function () {
// redetermine the window width/height
w = s.getDimensions();
// reposition the dialog
s.setContainerDimensions(true);
if (ie6) {
s.fixIE();
}
else if (s.o.modal) {
// update the iframe & overlay
s.d.iframe && s.d.iframe.css({height: w[0], width: w[1]});
s.d.overlay.css({height: w[0], width: w[1]});
}
});
},
/*
* Unbind events
*/
unbindEvents: function () {
$('.' + this.o.closeClass).unbind('click.simplemodal');
$(document).unbind('keydown.simplemodal');
$(window).unbind('resize.simplemodal');
this.d.overlay.unbind('click.simplemodal');
},
/*
* Fix issues in IE6 and IE7 in quirks mode
*/
fixIE: function () {
var s = this, p = s.o.position;
// simulate fixed position - adapted from BlockUI
$.each([s.d.iframe || null, !s.o.modal ? null : s.d.overlay, s.d.container], function (i, el) {
if (el) {
var bch = 'document.body.clientHeight', bcw = 'document.body.clientWidth',
bsh = 'document.body.scrollHeight', bsl = 'document.body.scrollLeft',
bst = 'document.body.scrollTop', bsw = 'document.body.scrollWidth',
ch = 'document.documentElement.clientHeight', cw = 'document.documentElement.clientWidth',
sl = 'document.documentElement.scrollLeft', st = 'document.documentElement.scrollTop',
s = el[0].style;
s.position = 'absolute';
if (i < 2) {
s.removeExpression('height');
s.removeExpression('width');
s.setExpression('height','' + bsh + ' > ' + bch + ' ? ' + bsh + ' : ' + bch + ' + "px"');
s.setExpression('width','' + bsw + ' > ' + bcw + ' ? ' + bsw + ' : ' + bcw + ' + "px"');
}
else {
var te, le;
if (p && p.constructor == Array) {
var top = p[0]
? typeof p[0] == 'number' ? p[0].toString() : p[0].replace(/px/, '')
: el.css('top').replace(/px/, '');
te = top.indexOf('%') == -1
? top + ' + (t = ' + st + ' ? ' + st + ' : ' + bst + ') + "px"'
: parseInt(top.replace(/%/, '')) + ' * ((' + ch + ' || ' + bch + ') / 100) + (t = ' + st + ' ? ' + st + ' : ' + bst + ') + "px"';
if (p[1]) {
var left = typeof p[1] == 'number' ? p[1].toString() : p[1].replace(/px/, '');
le = left.indexOf('%') == -1
? left + ' + (t = ' + sl + ' ? ' + sl + ' : ' + bsl + ') + "px"'
: parseInt(left.replace(/%/, '')) + ' * ((' + cw + ' || ' + bcw + ') / 100) + (t = ' + sl + ' ? ' + sl + ' : ' + bsl + ') + "px"';
}
}
else {
te = '(' + ch + ' || ' + bch + ') / 2 - (this.offsetHeight / 2) + (t = ' + st + ' ? ' + st + ' : ' + bst + ') + "px"';
le = '(' + cw + ' || ' + bcw + ') / 2 - (this.offsetWidth / 2) + (t = ' + sl + ' ? ' + sl + ' : ' + bsl + ') + "px"';
}
s.removeExpression('top');
s.removeExpression('left');
s.setExpression('top', te);
s.setExpression('left', le);
}
}
});
},
focus: function (pos) {
var s = this, p = pos || 'first';
// focus on dialog or the first visible/enabled input element
var input = $(':input:enabled:visible:' + p, s.d.wrap);
input.length > 0 ? input.focus() : s.d.wrap.focus();
},
getDimensions: function () {
var el = $(window);
// fix a jQuery/Opera bug with determining the window height
var h = $.browser.opera && $.browser.version > '9.5' && $.fn.jquery <= '1.2.6' ? document.documentElement['clientHeight'] :
$.browser.opera && $.browser.version < '9.5' && $.fn.jquery > '1.2.6' ? window.innerHeight :
el.height();
return [h, el.width()];
},
getVal: function (v) {
return v == 'auto' ? 0
: v.indexOf('%') > 0 ? v
: parseInt(v.replace(/px/, ''));
},
setContainerDimensions: function (resize) {
var s = this;
if (!resize || (resize && s.o.autoResize)) {
// get the dimensions for the container and data
var ch = $.browser.opera ? s.d.container.height() : s.getVal(s.d.container.css('height')),
cw = $.browser.opera ? s.d.container.width() : s.getVal(s.d.container.css('width')),
dh = s.d.data.outerHeight(true), dw = s.d.data.outerWidth(true);
var mh = s.o.maxHeight && s.o.maxHeight < w[0] ? s.o.maxHeight : w[0],
mw = s.o.maxWidth && s.o.maxWidth < w[1] ? s.o.maxWidth : w[1];
// height
if (!ch) {
if (!dh) {ch = s.o.minHeight;}
else {
if (dh > mh) {ch = mh;}
else if (dh < s.o.minHeight) {ch = s.o.minHeight;}
else {ch = dh;}
}
}
else {
ch = ch > mh ? mh : ch;
}
// width
if (!cw) {
if (!dw) {cw = s.o.minWidth;}
else {
if (dw > mw) {cw = mw;}
else if (dw < s.o.minWidth) {cw = s.o.minWidth;}
else {cw = dw;}
}
}
else {
cw = cw > mw ? mw : cw;
}
s.d.container.css({height: ch, width: cw});
/* Uncomment if you want the dialog to have scrollbars inside it.
if (dh > ch || dw > cw) {
s.d.wrap.css({overflow:'auto'});
} */
}
if (s.o.autoPosition) {
s.setPosition();
}
},
setPosition: function () {
var s = this, top, left,
hc = (w[0]/2) - (s.d.container.outerHeight(true)/2),
vc = (w[1]/2) - (s.d.container.outerWidth(true)/2);
if (s.o.position && Object.prototype.toString.call(s.o.position) === "[object Array]") {
top = s.o.position[0] || hc;
left = s.o.position[1] || vc;
} else {
top = hc;
left = vc;
}
s.d.container.css({left: left, top: top});
},
watchTab: function (e) {
var s = this;
if ($(e.target).parents('.simplemodal-container').length > 0) {
// save the list of inputs
s.inputs = $(':input:enabled:visible:first, :input:enabled:visible:last', s.d.data[0]);
// if it's the first or last tabbable element, refocus
if ((!e.shiftKey && e.target == s.inputs[s.inputs.length -1]) ||
(e.shiftKey && e.target == s.inputs[0]) ||
s.inputs.length == 0) {
e.preventDefault();
var pos = e.shiftKey ? 'last' : 'first';
setTimeout(function () {s.focus(pos);}, 10);
}
}
else {
// might be necessary when custom onShow callback is used
e.preventDefault();
setTimeout(function () {s.focus();}, 10);
}
},
/*
* Open the modal dialog elements
* - Note: If you use the onOpen callback, you must "show" the
* overlay and container elements manually
* (the iframe will be handled by SimpleModal)
*/
open: function () {
var s = this;
// display the iframe
s.d.iframe && s.d.iframe.show();
if ($.isFunction(s.o.onOpen)) {
// execute the onOpen callback
s.o.onOpen.apply(s, [s.d]);
}
else {
// display the remaining elements
s.d.overlay.show();
s.d.container.show();
s.d.data.show();
}
s.focus();
// bind default events
s.bindEvents();
},
/*
* Close the modal dialog
* - Note: If you use an onClose callback, you must remove the
* overlay, container and iframe elements manually
*
* @param {boolean} external Indicates whether the call to this
* function was internal or external. If it was external, the
* onClose callback will be ignored
*/
close: function () {
var s = this;
// prevent close when dialog does not exist
if (!s.d.data) {
return false;
}
// remove the default events
s.unbindEvents();
if ($.isFunction(s.o.onClose) && !s.occb) {
// set the onClose callback flag
s.occb = true;
// execute the onClose callback
s.o.onClose.apply(s, [s.d]);
}
else {
// if the data came from the DOM, put it back
if (s.d.placeholder) {
var ph = $('#simplemodal-placeholder');
// save changes to the data?
if (s.o.persist) {
// insert the (possibly) modified data back into the DOM
ph.replaceWith(s.d.data.removeClass('simplemodal-data').css('display', s.display));
}
else {
// remove the current and insert the original,
// unmodified data back into the DOM
s.d.data.hide().remove();
ph.replaceWith(s.d.orig);
}
}
else {
// otherwise, remove it
s.d.data.hide().remove();
}
// remove the remaining elements
s.d.container.hide().remove();
s.d.overlay.hide().remove();
s.d.iframe && s.d.iframe.hide().remove();
// reset the dialog object
s.d = {};
}
}
};
})(jQuery);

View File

@ -0,0 +1,51 @@
/**
* jQuery Validation Plugin 1.9.0
*
* http://bassistance.de/jquery-plugins/jquery-plugin-validation/
* http://docs.jquery.com/Plugins/Validation
*
* Copyright (c) 2006 - 2011 Jörn Zaefferer
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*/
(function(c){c.extend(c.fn,{validate:function(a){if(this.length){var b=c.data(this[0],"validator");if(b)return b;this.attr("novalidate","novalidate");b=new c.validator(a,this[0]);c.data(this[0],"validator",b);if(b.settings.onsubmit){a=this.find("input, button");a.filter(".cancel").click(function(){b.cancelSubmit=true});b.settings.submitHandler&&a.filter(":submit").click(function(){b.submitButton=this});this.submit(function(d){function e(){if(b.settings.submitHandler){if(b.submitButton)var f=c("<input type='hidden'/>").attr("name",
b.submitButton.name).val(b.submitButton.value).appendTo(b.currentForm);b.settings.submitHandler.call(b,b.currentForm);b.submitButton&&f.remove();return false}return true}b.settings.debug&&d.preventDefault();if(b.cancelSubmit){b.cancelSubmit=false;return e()}if(b.form()){if(b.pendingRequest){b.formSubmitted=true;return false}return e()}else{b.focusInvalid();return false}})}return b}else a&&a.debug&&window.console&&console.warn("nothing selected, can't validate, returning nothing")},valid:function(){if(c(this[0]).is("form"))return this.validate().form();
else{var a=true,b=c(this[0].form).validate();this.each(function(){a&=b.element(this)});return a}},removeAttrs:function(a){var b={},d=this;c.each(a.split(/\s/),function(e,f){b[f]=d.attr(f);d.removeAttr(f)});return b},rules:function(a,b){var d=this[0];if(a){var e=c.data(d.form,"validator").settings,f=e.rules,g=c.validator.staticRules(d);switch(a){case "add":c.extend(g,c.validator.normalizeRule(b));f[d.name]=g;if(b.messages)e.messages[d.name]=c.extend(e.messages[d.name],b.messages);break;case "remove":if(!b){delete f[d.name];
return g}var h={};c.each(b.split(/\s/),function(j,i){h[i]=g[i];delete g[i]});return h}}d=c.validator.normalizeRules(c.extend({},c.validator.metadataRules(d),c.validator.classRules(d),c.validator.attributeRules(d),c.validator.staticRules(d)),d);if(d.required){e=d.required;delete d.required;d=c.extend({required:e},d)}return d}});c.extend(c.expr[":"],{blank:function(a){return!c.trim(""+a.value)},filled:function(a){return!!c.trim(""+a.value)},unchecked:function(a){return!a.checked}});c.validator=function(a,
b){this.settings=c.extend(true,{},c.validator.defaults,a);this.currentForm=b;this.init()};c.validator.format=function(a,b){if(arguments.length==1)return function(){var d=c.makeArray(arguments);d.unshift(a);return c.validator.format.apply(this,d)};if(arguments.length>2&&b.constructor!=Array)b=c.makeArray(arguments).slice(1);if(b.constructor!=Array)b=[b];c.each(b,function(d,e){a=a.replace(RegExp("\\{"+d+"\\}","g"),e)});return a};c.extend(c.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",
validClass:"valid",errorElement:"label",focusInvalid:true,errorContainer:c([]),errorLabelContainer:c([]),onsubmit:true,ignore:":hidden",ignoreTitle:false,onfocusin:function(a){this.lastActive=a;if(this.settings.focusCleanup&&!this.blockFocusCleanup){this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass);this.addWrapper(this.errorsFor(a)).hide()}},onfocusout:function(a){if(!this.checkable(a)&&(a.name in this.submitted||!this.optional(a)))this.element(a)},
onkeyup:function(a){if(a.name in this.submitted||a==this.lastElement)this.element(a)},onclick:function(a){if(a.name in this.submitted)this.element(a);else a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(a,b,d){a.type==="radio"?this.findByName(a.name).addClass(b).removeClass(d):c(a).addClass(b).removeClass(d)},unhighlight:function(a,b,d){a.type==="radio"?this.findByName(a.name).removeClass(b).addClass(d):c(a).removeClass(b).addClass(d)}},setDefaults:function(a){c.extend(c.validator.defaults,
a)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",accept:"Please enter a value with a valid extension.",maxlength:c.validator.format("Please enter no more than {0} characters."),
minlength:c.validator.format("Please enter at least {0} characters."),rangelength:c.validator.format("Please enter a value between {0} and {1} characters long."),range:c.validator.format("Please enter a value between {0} and {1}."),max:c.validator.format("Please enter a value less than or equal to {0}."),min:c.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:false,prototype:{init:function(){function a(e){var f=c.data(this[0].form,"validator"),g="on"+e.type.replace(/^validate/,
"");f.settings[g]&&f.settings[g].call(f,this[0],e)}this.labelContainer=c(this.settings.errorLabelContainer);this.errorContext=this.labelContainer.length&&this.labelContainer||c(this.currentForm);this.containers=c(this.settings.errorContainer).add(this.settings.errorLabelContainer);this.submitted={};this.valueCache={};this.pendingRequest=0;this.pending={};this.invalid={};this.reset();var b=this.groups={};c.each(this.settings.groups,function(e,f){c.each(f.split(/\s/),function(g,h){b[h]=e})});var d=
this.settings.rules;c.each(d,function(e,f){d[e]=c.validator.normalizeRule(f)});c(this.currentForm).validateDelegate("[type='text'], [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'] ","focusin focusout keyup",a).validateDelegate("[type='radio'], [type='checkbox'], select, option","click",
a);this.settings.invalidHandler&&c(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler)},form:function(){this.checkForm();c.extend(this.submitted,this.errorMap);this.invalid=c.extend({},this.errorMap);this.valid()||c(this.currentForm).triggerHandler("invalid-form",[this]);this.showErrors();return this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(a){this.lastElement=
a=this.validationTargetFor(this.clean(a));this.prepareElement(a);this.currentElements=c(a);var b=this.check(a);if(b)delete this.invalid[a.name];else this.invalid[a.name]=true;if(!this.numberOfInvalids())this.toHide=this.toHide.add(this.containers);this.showErrors();return b},showErrors:function(a){if(a){c.extend(this.errorMap,a);this.errorList=[];for(var b in a)this.errorList.push({message:a[b],element:this.findByName(b)[0]});this.successList=c.grep(this.successList,function(d){return!(d.name in a)})}this.settings.showErrors?
this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){c.fn.resetForm&&c(this.currentForm).resetForm();this.submitted={};this.lastElement=null;this.prepareForm();this.hideErrors();this.elements().removeClass(this.settings.errorClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b=0,d;for(d in a)b++;return b},hideErrors:function(){this.addWrapper(this.toHide).hide()},valid:function(){return this.size()==
0},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{c(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(a){}},findLastActive:function(){var a=this.lastActive;return a&&c.grep(this.errorList,function(b){return b.element.name==a.name}).length==1&&a},elements:function(){var a=this,b={};return c(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){!this.name&&
a.settings.debug&&window.console&&console.error("%o has no name assigned",this);if(this.name in b||!a.objectLength(c(this).rules()))return false;return b[this.name]=true})},clean:function(a){return c(a)[0]},errors:function(){return c(this.settings.errorElement+"."+this.settings.errorClass,this.errorContext)},reset:function(){this.successList=[];this.errorList=[];this.errorMap={};this.toShow=c([]);this.toHide=c([]);this.currentElements=c([])},prepareForm:function(){this.reset();this.toHide=this.errors().add(this.containers)},
prepareElement:function(a){this.reset();this.toHide=this.errorsFor(a)},check:function(a){a=this.validationTargetFor(this.clean(a));var b=c(a).rules(),d=false,e;for(e in b){var f={method:e,parameters:b[e]};try{var g=c.validator.methods[e].call(this,a.value.replace(/\r/g,""),a,f.parameters);if(g=="dependency-mismatch")d=true;else{d=false;if(g=="pending"){this.toHide=this.toHide.not(this.errorsFor(a));return}if(!g){this.formatAndAdd(a,f);return false}}}catch(h){this.settings.debug&&window.console&&console.log("exception occured when checking element "+
a.id+", check the '"+f.method+"' method",h);throw h;}}if(!d){this.objectLength(b)&&this.successList.push(a);return true}},customMetaMessage:function(a,b){if(c.metadata){var d=this.settings.meta?c(a).metadata()[this.settings.meta]:c(a).metadata();return d&&d.messages&&d.messages[b]}},customMessage:function(a,b){var d=this.settings.messages[a];return d&&(d.constructor==String?d:d[b])},findDefined:function(){for(var a=0;a<arguments.length;a++)if(arguments[a]!==undefined)return arguments[a]},defaultMessage:function(a,
b){return this.findDefined(this.customMessage(a.name,b),this.customMetaMessage(a,b),!this.settings.ignoreTitle&&a.title||undefined,c.validator.messages[b],"<strong>Warning: No message defined for "+a.name+"</strong>")},formatAndAdd:function(a,b){var d=this.defaultMessage(a,b.method),e=/\$?\{(\d+)\}/g;if(typeof d=="function")d=d.call(this,b.parameters,a);else if(e.test(d))d=jQuery.format(d.replace(e,"{$1}"),b.parameters);this.errorList.push({message:d,element:a});this.errorMap[a.name]=d;this.submitted[a.name]=
d},addWrapper:function(a){if(this.settings.wrapper)a=a.add(a.parent(this.settings.wrapper));return a},defaultShowErrors:function(){for(var a=0;this.errorList[a];a++){var b=this.errorList[a];this.settings.highlight&&this.settings.highlight.call(this,b.element,this.settings.errorClass,this.settings.validClass);this.showLabel(b.element,b.message)}if(this.errorList.length)this.toShow=this.toShow.add(this.containers);if(this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);
if(this.settings.unhighlight){a=0;for(b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass)}this.toHide=this.toHide.not(this.toShow);this.hideErrors();this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return c(this.errorList).map(function(){return this.element})},showLabel:function(a,b){var d=this.errorsFor(a);if(d.length){d.removeClass(this.settings.validClass).addClass(this.settings.errorClass);
d.attr("generated")&&d.html(b)}else{d=c("<"+this.settings.errorElement+"/>").attr({"for":this.idOrName(a),generated:true}).addClass(this.settings.errorClass).html(b||"");if(this.settings.wrapper)d=d.hide().show().wrap("<"+this.settings.wrapper+"/>").parent();this.labelContainer.append(d).length||(this.settings.errorPlacement?this.settings.errorPlacement(d,c(a)):d.insertAfter(a))}if(!b&&this.settings.success){d.text("");typeof this.settings.success=="string"?d.addClass(this.settings.success):this.settings.success(d)}this.toShow=
this.toShow.add(d)},errorsFor:function(a){var b=this.idOrName(a);return this.errors().filter(function(){return c(this).attr("for")==b})},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(a){if(this.checkable(a))a=this.findByName(a.name).not(this.settings.ignore)[0];return a},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(a){var b=this.currentForm;return c(document.getElementsByName(a)).map(function(d,
e){return e.form==b&&e.name==a&&e||null})},getLength:function(a,b){switch(b.nodeName.toLowerCase()){case "select":return c("option:selected",b).length;case "input":if(this.checkable(b))return this.findByName(b.name).filter(":checked").length}return a.length},depend:function(a,b){return this.dependTypes[typeof a]?this.dependTypes[typeof a](a,b):true},dependTypes:{"boolean":function(a){return a},string:function(a,b){return!!c(a,b.form).length},"function":function(a,b){return a(b)}},optional:function(a){return!c.validator.methods.required.call(this,
c.trim(a.value),a)&&"dependency-mismatch"},startRequest:function(a){if(!this.pending[a.name]){this.pendingRequest++;this.pending[a.name]=true}},stopRequest:function(a,b){this.pendingRequest--;if(this.pendingRequest<0)this.pendingRequest=0;delete this.pending[a.name];if(b&&this.pendingRequest==0&&this.formSubmitted&&this.form()){c(this.currentForm).submit();this.formSubmitted=false}else if(!b&&this.pendingRequest==0&&this.formSubmitted){c(this.currentForm).triggerHandler("invalid-form",[this]);this.formSubmitted=
false}},previousValue:function(a){return c.data(a,"previousValue")||c.data(a,"previousValue",{old:null,valid:true,message:this.defaultMessage(a,"remote")})}},classRuleSettings:{required:{required:true},email:{email:true},url:{url:true},date:{date:true},dateISO:{dateISO:true},dateDE:{dateDE:true},number:{number:true},numberDE:{numberDE:true},digits:{digits:true},creditcard:{creditcard:true}},addClassRules:function(a,b){a.constructor==String?this.classRuleSettings[a]=b:c.extend(this.classRuleSettings,
a)},classRules:function(a){var b={};(a=c(a).attr("class"))&&c.each(a.split(" "),function(){this in c.validator.classRuleSettings&&c.extend(b,c.validator.classRuleSettings[this])});return b},attributeRules:function(a){var b={};a=c(a);for(var d in c.validator.methods){var e;if(e=d==="required"&&typeof c.fn.prop==="function"?a.prop(d):a.attr(d))b[d]=e;else if(a[0].getAttribute("type")===d)b[d]=true}b.maxlength&&/-1|2147483647|524288/.test(b.maxlength)&&delete b.maxlength;return b},metadataRules:function(a){if(!c.metadata)return{};
var b=c.data(a.form,"validator").settings.meta;return b?c(a).metadata()[b]:c(a).metadata()},staticRules:function(a){var b={},d=c.data(a.form,"validator");if(d.settings.rules)b=c.validator.normalizeRule(d.settings.rules[a.name])||{};return b},normalizeRules:function(a,b){c.each(a,function(d,e){if(e===false)delete a[d];else if(e.param||e.depends){var f=true;switch(typeof e.depends){case "string":f=!!c(e.depends,b.form).length;break;case "function":f=e.depends.call(b,b)}if(f)a[d]=e.param!==undefined?
e.param:true;else delete a[d]}});c.each(a,function(d,e){a[d]=c.isFunction(e)?e(b):e});c.each(["minlength","maxlength","min","max"],function(){if(a[this])a[this]=Number(a[this])});c.each(["rangelength","range"],function(){if(a[this])a[this]=[Number(a[this][0]),Number(a[this][1])]});if(c.validator.autoCreateRanges){if(a.min&&a.max){a.range=[a.min,a.max];delete a.min;delete a.max}if(a.minlength&&a.maxlength){a.rangelength=[a.minlength,a.maxlength];delete a.minlength;delete a.maxlength}}a.messages&&delete a.messages;
return a},normalizeRule:function(a){if(typeof a=="string"){var b={};c.each(a.split(/\s/),function(){b[this]=true});a=b}return a},addMethod:function(a,b,d){c.validator.methods[a]=b;c.validator.messages[a]=d!=undefined?d:c.validator.messages[a];b.length<3&&c.validator.addClassRules(a,c.validator.normalizeRule(a))},methods:{required:function(a,b,d){if(!this.depend(d,b))return"dependency-mismatch";switch(b.nodeName.toLowerCase()){case "select":return(a=c(b).val())&&a.length>0;case "input":if(this.checkable(b))return this.getLength(a,
b)>0;default:return c.trim(a).length>0}},remote:function(a,b,d){if(this.optional(b))return"dependency-mismatch";var e=this.previousValue(b);this.settings.messages[b.name]||(this.settings.messages[b.name]={});e.originalMessage=this.settings.messages[b.name].remote;this.settings.messages[b.name].remote=e.message;d=typeof d=="string"&&{url:d}||d;if(this.pending[b.name])return"pending";if(e.old===a)return e.valid;e.old=a;var f=this;this.startRequest(b);var g={};g[b.name]=a;c.ajax(c.extend(true,{url:d,
mode:"abort",port:"validate"+b.name,dataType:"json",data:g,success:function(h){f.settings.messages[b.name].remote=e.originalMessage;var j=h===true;if(j){var i=f.formSubmitted;f.prepareElement(b);f.formSubmitted=i;f.successList.push(b);f.showErrors()}else{i={};h=h||f.defaultMessage(b,"remote");i[b.name]=e.message=c.isFunction(h)?h(a):h;f.showErrors(i)}e.valid=j;f.stopRequest(b,j)}},d));return"pending"},minlength:function(a,b,d){return this.optional(b)||this.getLength(c.trim(a),b)>=d},maxlength:function(a,
b,d){return this.optional(b)||this.getLength(c.trim(a),b)<=d},rangelength:function(a,b,d){a=this.getLength(c.trim(a),b);return this.optional(b)||a>=d[0]&&a<=d[1]},min:function(a,b,d){return this.optional(b)||a>=d},max:function(a,b,d){return this.optional(b)||a<=d},range:function(a,b,d){return this.optional(b)||a>=d[0]&&a<=d[1]},email:function(a,b){return this.optional(b)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(a)},
url:function(a,b){return this.optional(b)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(a)},
date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a))},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(a)},number:function(a,b){return this.optional(b)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},creditcard:function(a,b){if(this.optional(b))return"dependency-mismatch";if(/[^0-9 -]+/.test(a))return false;var d=0,e=0,f=false;a=a.replace(/\D/g,"");for(var g=a.length-1;g>=
0;g--){e=a.charAt(g);e=parseInt(e,10);if(f)if((e*=2)>9)e-=9;d+=e;f=!f}return d%10==0},accept:function(a,b,d){d=typeof d=="string"?d.replace(/,/g,"|"):"png|jpe?g|gif";return this.optional(b)||a.match(RegExp(".("+d+")$","i"))},equalTo:function(a,b,d){d=c(d).unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){c(b).valid()});return a==d.val()}}});c.format=c.validator.format})(jQuery);
(function(c){var a={};if(c.ajaxPrefilter)c.ajaxPrefilter(function(d,e,f){e=d.port;if(d.mode=="abort"){a[e]&&a[e].abort();a[e]=f}});else{var b=c.ajax;c.ajax=function(d){var e=("port"in d?d:c.ajaxSettings).port;if(("mode"in d?d:c.ajaxSettings).mode=="abort"){a[e]&&a[e].abort();return a[e]=b.apply(this,arguments)}return b.apply(this,arguments)}}})(jQuery);
(function(c){!jQuery.event.special.focusin&&!jQuery.event.special.focusout&&document.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.handle.call(this,e)}c.event.special[b]={setup:function(){this.addEventListener(a,d,true)},teardown:function(){this.removeEventListener(a,d,true)},handler:function(e){arguments[0]=c.event.fix(e);arguments[0].type=b;return c.event.handle.apply(this,arguments)}}});c.extend(c.fn,{validateDelegate:function(a,
b,d){return this.bind(b,function(e){var f=c(e.target);if(f.is(a))return d.apply(f,arguments)})}})})(jQuery);

View File

@ -0,0 +1,5 @@
/*
** Unobtrusive validation support library for jQuery and jQuery Validate
** Copyright (C) Microsoft Corporation. All rights reserved.
*/
(function(a){var d=a.validator,b,f="unobtrusiveValidation";function c(a,b,c){a.rules[b]=c;if(a.message)a.messages[b]=a.message}function i(a){return a.replace(/^\s+|\s+$/g,"").split(/\s*,\s*/g)}function g(a){return a.substr(0,a.lastIndexOf(".")+1)}function e(a,b){if(a.indexOf("*.")===0)a=a.replace("*.",b);return a}function l(c,d){var b=a(this).find("[data-valmsg-for='"+d[0].name+"']"),e=a.parseJSON(b.attr("data-valmsg-replace"))!==false;b.removeClass("field-validation-valid").addClass("field-validation-error");c.data("unobtrusiveContainer",b);if(e){b.empty();c.removeClass("input-validation-error").appendTo(b)}else c.hide()}function k(e,d){var c=a(this).find("[data-valmsg-summary=true]"),b=c.find("ul");if(b&&b.length&&d.errorList.length){b.empty();c.addClass("validation-summary-errors").removeClass("validation-summary-valid");a.each(d.errorList,function(){a("<li />").html(this.message).appendTo(b)})}}function j(c){var b=c.data("unobtrusiveContainer"),d=a.parseJSON(b.attr("data-valmsg-replace"));if(b){b.addClass("field-validation-valid").removeClass("field-validation-error");c.removeData("unobtrusiveContainer");d&&b.empty()}}function h(d){var b=a(d),c=b.data(f);if(!c){c={options:{errorClass:"input-validation-error",errorElement:"span",errorPlacement:a.proxy(l,d),invalidHandler:a.proxy(k,d),messages:{},rules:{},success:a.proxy(j,d)},attachValidation:function(){b.validate(this.options)},validate:function(){b.validate();return b.valid()}};b.data(f,c)}return c}d.unobtrusive={adapters:[],parseElement:function(b,i){var d=a(b),f=d.parents("form")[0],c,e,g;if(!f)return;c=h(f);c.options.rules[b.name]=e={};c.options.messages[b.name]=g={};a.each(this.adapters,function(){var c="data-val-"+this.name,i=d.attr(c),h={};if(i!==undefined){c+="-";a.each(this.params,function(){h[this]=d.attr(c+this)});this.adapt({element:b,form:f,message:i,params:h,rules:e,messages:g})}});jQuery.extend(e,{__dummy__:true});!i&&c.attachValidation()},parse:function(b){a(b).find(":input[data-val=true]").each(function(){d.unobtrusive.parseElement(this,true)});a("form").each(function(){var a=h(this);a&&a.attachValidation()})}};b=d.unobtrusive.adapters;b.add=function(c,a,b){if(!b){b=a;a=[]}this.push({name:c,params:a,adapt:b});return this};b.addBool=function(a,b){return this.add(a,function(d){c(d,b||a,true)})};b.addMinMax=function(e,g,f,a,d,b){return this.add(e,[d||"min",b||"max"],function(b){var e=b.params.min,d=b.params.max;if(e&&d)c(b,a,[e,d]);else if(e)c(b,g,e);else d&&c(b,f,d)})};b.addSingleVal=function(a,b,d){return this.add(a,[b||"val"],function(e){c(e,d||a,e.params[b])})};d.addMethod("__dummy__",function(){return true});d.addMethod("regex",function(b,c,d){var a;if(this.optional(c))return true;a=(new RegExp(d)).exec(b);return a&&a.index===0&&a[0].length===b.length});b.addSingleVal("accept","exts").addSingleVal("regex","pattern");b.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url");b.addMinMax("length","minlength","maxlength","rangelength").addMinMax("range","min","max","range");b.add("equalto",["other"],function(b){var h=g(b.element.name),i=b.params.other,d=e(i,h),f=a(b.form).find(":input[name="+d+"]")[0];c(b,"equalTo",f)});b.add("required",function(a){(a.element.tagName.toUpperCase()!=="INPUT"||a.element.type.toUpperCase()!=="CHECKBOX")&&c(a,"required",true)});b.add("remote",["url","type","additionalfields"],function(b){var d={url:b.params.url,type:b.params.type||"GET",data:{}},f=g(b.element.name);a.each(i(b.params.additionalfields||b.element.name),function(h,g){var c=e(g,f);d.data[c]=function(){return a(b.form).find(":input[name='"+c+"']").val()}});c(b,"remote",d)});a(function(){d.unobtrusive.parse(document)})})(jQuery);

View File

@ -0,0 +1,735 @@
/*
* jQuery UI CSS Framework 1.8.7
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*/
/* Layout helpers
----------------------------------*/
.ui-helper-hidden { display: none; }
.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
.ui-helper-clearfix { display: inline-block; }
/* required comment for clearfix to work in Opera \*/
* html .ui-helper-clearfix { height:1%; }
.ui-helper-clearfix { display:block; }
/* end clearfix */
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
/* Interaction Cues
----------------------------------*/
.ui-state-disabled { cursor: default !important; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
/* Misc visuals
----------------------------------*/
/* Overlays */
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
/*
* jQuery UI CSS Framework 1.8.7
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ctl=themeroller
*/
/* Component containers
----------------------------------*/
.ui-widget { font-family: Arial,sans-serif; font-size: 1.1em; }
.ui-widget .ui-widget { font-size: 1em; }
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Arial,sans-serif; font-size: 1em; }
.ui-widget-content { border: 1px solid #B6B6B6; background: #ffffff; color: #4F4F4F; }
.ui-widget-content a { color: #4F4F4F; }
.ui-widget-header { border: 1px solid #B6B6B6; color: #4F4F4F; font-weight: bold; }
.ui-widget-header {
background: #ededed url(images/bg_fallback.png) 0 0 repeat-x; /* Old browsers */
background: -moz-linear-gradient(top, #ededed 0%, #c4c4c4 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ededed), color-stop(100%,#c4c4c4)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* Opera11.10+ */
background: -ms-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* IE10+ */
background: linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* W3C */
}
.ui-widget-header a { color: #4F4F4F; }
/* Interaction states
----------------------------------*/
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #B6B6B6; font-weight: normal; color: #4F4F4F; }
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
background: #ededed url(images/bg_fallback.png) 0 0 repeat-x; /* Old browsers */
background: -moz-linear-gradient(top, #ededed 0%, #c4c4c4 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ededed), color-stop(100%,#c4c4c4)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* Opera11.10+ */
background: -ms-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* IE10+ */
background: linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* W3C */
-webkit-box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset;
-moz-box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset;
box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset;
}
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #4F4F4F; text-decoration: none; }
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #9D9D9D; font-weight: normal; color: #313131; }
.ui-state-hover a, .ui-state-hover a:hover { color: #313131; text-decoration: none; }
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active {
outline: none;
color: #1c4257; border: 1px solid #7096ab;
background: #ededed url(images/bg_fallback.png) 0 -50px repeat-x; /* Old browsers */
background: -moz-linear-gradient(top, #b9e0f5 0%, #92bdd6 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b9e0f5), color-stop(100%,#92bdd6)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* Opera11.10+ */
background: -ms-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* IE10+ */
background: linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* W3C */
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
}
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #313131; text-decoration: none; }
.ui-widget :active { outline: none; }
/* Interaction Cues
----------------------------------*/
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { border: 1px solid #d2dbf4; background: #f4f8fd; color: #0d2054; -moz-border-radius: 0 !important; -webkit-border-radius: 0 !important; border-radius: 0 !important; }
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { border: 1px solid #e2d0d0; background: #fcf0f0; color: #280b0b; -moz-border-radius: 0 !important; -webkit-border-radius: 0 !important; border-radius: 0 !important; }
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
.ui-state-default .ui-icon { background-image: url(images/ui-icons_454545_256x240.png); }
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon { background: url(images/icon_sprite.png) -16px 0 no-repeat !important; }
.ui-state-highlight .ui-icon, .ui-state-error .ui-icon { margin-top: -1px; }
/* positioning */
.ui-icon-carat-1-n { background-position: 0 0; }
.ui-icon-carat-1-ne { background-position: -16px 0; }
.ui-icon-carat-1-e { background-position: -32px 0; }
.ui-icon-carat-1-se { background-position: -48px 0; }
.ui-icon-carat-1-s { background-position: -64px 0; }
.ui-icon-carat-1-sw { background-position: -80px 0; }
.ui-icon-carat-1-w { background-position: -96px 0; }
.ui-icon-carat-1-nw { background-position: -112px 0; }
.ui-icon-carat-2-n-s { background-position: -128px 0; }
.ui-icon-carat-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -64px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -64px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background: url(images/icon_sprite.png) 0 0 no-repeat !important; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-off { background-position: -96px -144px; }
.ui-icon-radio-on { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-start { background-position: -80px -160px; }
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
/* Misc visuals
----------------------------------*/
/* Corner radius */
.ui-corner-tl { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; }
.ui-corner-tr { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; }
.ui-corner-bl { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; }
.ui-corner-br { -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; }
.ui-corner-top { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; }
.ui-corner-bottom { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; }
.ui-corner-right { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; }
.ui-corner-left { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; }
.ui-corner-all { -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; }
/* Overlays */
.ui-widget-overlay { background: #262b33; opacity: .70;filter:Alpha(Opacity=70); }
.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #000000; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
* jQuery UI Resizable 1.8.7
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Resizable#theming
*/
.ui-resizable { position: relative;}
.ui-resizable-handle { position: absolute; font-size: 0.1px; z-index: 999; display: block;}
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
* jQuery UI Selectable 1.8.7
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Selectable#theming
*/
.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
/*
* jQuery UI Accordion 1.8.7
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Accordion#theming
*/
/* IE/Win - Fix animation bug - #4615 */
.ui-accordion { width: 100%; }
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
.ui-accordion .ui-accordion-header, .ui-accordion .ui-accordion-content { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; }
.ui-accordion .ui-accordion-li-fix { display: inline; }
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
.ui-accordion .ui-accordion-header a { display: block; font-size: 12px; font-weight: bold; padding: .5em .5em .5em .7em; }
.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
.ui-accordion .ui-accordion-content-active { display: block; }/*
* jQuery UI Autocomplete 1.8.7
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Autocomplete#theming
*/
.ui-autocomplete {
position: absolute; cursor: default; z-index: 3;
-moz-border-radius: 0;
-webkit-border-radius: 0;
border-radius: 0;
-moz-box-shadow: 0 1px 5px rgba(0,0,0,0.3);
-webkit-box-shadow: 0 1px 5px rgba(0,0,0,0.3);
box-shadow: 0 1px 5px rgba(0,0,0,0.3);
}
/* workarounds */
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
/*
* jQuery UI Menu 1.8.7
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Menu#theming
*/
.ui-menu {
list-style:none;
padding: 2px;
margin: 0;
display:block;
float: left;
}
.ui-menu .ui-menu {
margin-top: -3px;
}
.ui-menu .ui-menu-item {
margin:0;
padding: 0;
zoom: 1;
float: left;
clear: left;
width: 100%;
}
.ui-menu .ui-menu-item a {
text-decoration:none;
display:block;
padding:.2em .4em;
line-height:1.5;
zoom:1;
}
.ui-menu .ui-menu-item a.ui-state-hover,
.ui-menu .ui-menu-item a.ui-state-active {
font-weight: normal;
margin: -1px;
background: #5f83b9;
color: #FFFFFF;
text-shadow: 0px 1px 1px #234386;
border-color: #466086;
-moz-border-radius: 0;
-webkit-border-radius: 0;
border-radius: 0;
}
/*
* jQuery UI Button 1.8.7
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Button#theming
*/
.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; -webkit-user-select: none; -moz-user-select: none; user-select: none; } /* the overflow property removes extra width in IE */
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
.ui-button-icons-only { width: 3.4em; }
button.ui-button-icons-only { width: 3.7em; }
/* button animation properties */
.ui-button {
-webkit-transition: -webkit-box-shadow 0.25s ease-in-out;
-moz-transition: -moz-box-shadow 0.25s ease-in-out;
-o-transition: -o-box-shadow 0.25s ease-in-out;
}
/*states*/
.ui-button.ui-state-hover {
-moz-box-shadow: 0 0 8px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255,255,255,0.8) inset;
-webkit-box-shadow: 0 0 8px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255,255,255,0.8) inset;
box-shadow: 0 0 8px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255,255,255,0.8) inset;
}
.ui-button.ui-state-focus {
outline: none;
color: #1c4257;
border-color: #7096ab;
background: #ededed url(images/bg_fallback.png) 0 -50px repeat-x; /* Old browsers */
background: -moz-linear-gradient(top, #b9e0f5 0%, #92bdd6 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b9e0f5), color-stop(100%,#92bdd6)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* Opera11.10+ */
background: -ms-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* IE10+ */
background: linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* W3C */
-moz-box-shadow: 0 0 8px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255,255,255,0.8) inset;
-webkit-box-shadow: 0 0 8px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255,255,255,0.8) inset;
box-shadow: 0 0 8px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255,255,255,0.8) inset;
}
/*button text element */
.ui-button .ui-button-text { display: block; line-height: 1.4; font-size: 14px; font-weight: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6); }
.ui-button-text-only .ui-button-text { padding: .4em 1em; }
.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
/* no icon support for input elements, provide padding by default */
input.ui-button { font-size: 14px; font-weight: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6); padding: 0 1em !important; height: 33px; }
/*remove submit button internal padding in Firefox*/
input.ui-button::-moz-focus-inner {
border: 0;
padding: 0;
}
/* fix webkits handling of the box model */
@media screen and (-webkit-min-device-pixel-ratio:0) {
input.ui-button {
height: 31px !important;
}
}
/*button icon element(s) */
.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
/*button sets*/
.ui-buttonset { margin-right: 7px; }
.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
.ui-buttonset .ui-button.ui-state-active { color: #1c4257; border-color: #7096ab; }
.ui-buttonset .ui-button.ui-state-active {
background: #ededed url(images/bg_fallback.png) 0 -50px repeat-x; /* Old browsers */
background: -moz-linear-gradient(top, #b9e0f5 0%, #92bdd6 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b9e0f5), color-stop(100%,#92bdd6)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* Opera11.10+ */
background: -ms-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* IE10+ */
background: linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* W3C */
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
}
/* workarounds */
button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
/*
* jQuery UI Dialog 1.8.7
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Dialog#theming
*/
.ui-dialog { position: absolute; padding: 0; width: 300px; overflow: hidden; }
.ui-dialog {
-webkit-box-shadow: 0 2px 12px rgba(0,0,0,0.6);
-moz-box-shadow: 0 2px 12px rgba(0,0,0,0.6);
}
.ui-dialog .ui-dialog-titlebar { padding: 0.7em 1em 0.6em 1em; position: relative; border: none; border-bottom: 1px solid #979797; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; }
.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; font-size: 14px; text-shadow: 0 1px 0 rgba(255,255,255,0.5); }
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .8em; top: 55%; width: 16px; margin: -10px 0 0 0; padding: 0; height: 16px; }
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; background: url(images/icon_sprite.png) 0 -16px no-repeat; }
.ui-dialog .ui-dialog-titlebar-close:hover span { background-position: -16px -16px; }
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; border: 0; }
.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
.ui-draggable .ui-dialog-titlebar { cursor: move; }
/*
* jQuery UI Slider 1.8.7
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Slider#theming
*/
.ui-slider { position: relative; text-align: left; background: #d7d7d7; z-index: 1; }
.ui-slider { -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.5) inset; -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.5) inset; box-shadow: 0 1px 2px rgba(0,0,0,0.5) inset; }
.ui-slider .ui-slider-handle { background: url(images/slider_handles.png) 0px -23px no-repeat; position: absolute; z-index: 2; width: 23px; height: 23px; cursor: default; border: none; outline: none; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; }
.ui-slider .ui-state-hover, .ui-slider .ui-state-active { background-position: 0 0; }
.ui-slider .ui-slider-range { background: #a3cae0; position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
.ui-slider .ui-slider-range { -moz-box-shadow: 0 1px 2px rgba(17,35,45,0.6) inset; -webkit-box-shadow: 0 1px 2px rgba(17,35,45,0.6) inset; box-shadow: 0 1px 2px rgba(17,35,45,0.6) inset; }
.ui-slider-horizontal { height: 5px; }
.ui-slider-horizontal .ui-slider-handle { top: -8px; margin-left: -13px; }
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
.ui-slider-vertical { width: 5px; height: 100px; }
.ui-slider-vertical .ui-slider-handle { left: -8px; margin-left: 0; margin-bottom: -13px; }
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
* jQuery UI Tabs 1.8.7
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Tabs#theming
*/
.ui-tabs { position: relative; zoom: 1; border: 0; background: transparent; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
.ui-tabs .ui-tabs-nav { margin: 0; padding: 0; background: transparent; border-width: 0 0 1px 0; }
.ui-tabs .ui-tabs-nav {
-moz-border-radius: 0;
-webkit-border-radius: 0;
border-radius: 0;
}
.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; font-size: 12px; font-weight: bold; text-shadow: 0 1px 0 rgba(255,255,255,0.5); }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; background: #fff; border-color: #B6B6B6; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; outline: none; }
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
.ui-tabs .ui-tabs-panel { display: block; border-width: 0 1px 1px 1px; padding: 1em 1.4em; background: none; }
.ui-tabs .ui-tabs-panel { background: #FFF;
-moz-border-radius: 0;
-webkit-border-radius: 0;
border-radius: 0;
}
.ui-tabs .ui-tabs-hide { display: none !important; }
/*
* jQuery UI Datepicker 1.8.7
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Datepicker#theming
*/
.ui-datepicker { width: 17em; padding: 0; display: none; border-color: #DDDDDD; }
.ui-datepicker {
-moz-box-shadow: 0 4px 8px rgba(0,0,0,0.5);
-webkit-box-shadow: 0 4px 8px rgba(0,0,0,0.5);
box-shadow: 0 4px 8px rgba(0,0,0,0.5);
}
.ui-datepicker .ui-datepicker-header { position:relative; padding:.35em 0; border: none; border-bottom: 1px solid #B6B6B6; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; }
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 6px; width: 1.8em; height: 1.8em; }
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { border: 1px none; }
.ui-datepicker .ui-datepicker-prev { left:2px; }
.ui-datepicker .ui-datepicker-next { right:2px; }
.ui-datepicker .ui-datepicker-prev span { background-position: 0px -32px !important; }
.ui-datepicker .ui-datepicker-next span { background-position: -16px -32px !important; }
.ui-datepicker .ui-datepicker-prev-hover span { background-position: 0px -48px !important; }
.ui-datepicker .ui-datepicker-next-hover span { background-position: -16px -48px !important; }
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; background: url(images/icon_sprite.png) no-repeat; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; font-size: 12px; text-shadow: 0 1px 0 rgba(255,255,255,0.6); }
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
.ui-datepicker td { border: 0; padding: 1px; }
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
.ui-datepicker table .ui-state-highlight { border-color: #5F83B9; }
.ui-datepicker table .ui-state-hover { background: #5F83B9; color: #FFF; font-weight: bold; text-shadow: 0 1px 1px #234386; -webkit-box-shadow: 0 0px 0 rgba(255,255,255,0.6) inset; -moz-box-shadow: 0 0px 0 rgba(255,255,255,0.6) inset; box-shadow: 0 0px 0 rgba(255,255,255,0.6) inset; border-color: #5F83B9; }
.ui-datepicker-calendar .ui-state-default { background: transparent; border-color: #FFF; }
.ui-datepicker-calendar .ui-state-active { background: #5F83B9; border-color: #5F83B9; color: #FFF; font-weight: bold; text-shadow: 0 1px 1px #234386; }
/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi { width:auto; }
.ui-datepicker-multi .ui-datepicker-group { float:left; }
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
.ui-datepicker-row-break { clear:both; width:100%; }
/* RTL support */
.ui-datepicker-rtl { direction: rtl; }
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
.ui-datepicker-cover {
display: none; /*sorry for IE5*/
display/**/: block; /*sorry for IE5*/
position: absolute; /*must have*/
z-index: -1; /*must have*/
filter: mask(); /*must have*/
top: -4px; /*must have*/
left: -4px; /*must have*/
width: 200px; /*must have*/
height: 200px; /*must have*/
}/*
* jQuery UI Progressbar 1.8.7
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Progressbar#theming
*/
.ui-progressbar { height: 12px; text-align: left; background: #FFF url(images/progress_bar.gif) 0 -14px repeat-x; }
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; background: url(images/progress_bar.gif) 0 0 repeat-x; }
/* Extra Input Field Styling */
.ui-form textarea, .ui-form input:not([type="submit"]):not([type="button"]):not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="range"]) {
padding: 3px;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
border-radius: 2px;
border: 1px solid #cecece;
outline: none;
-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.1) inset, 0 1px 0 rgba(255,255,255,0.2);
-moz-box-shadow: 0 1px 3px rgba(0,0,0,0.1) inset, 0 1px 0 rgba(255,255,255,0.2);
box-shadow: 0 1px 3px rgba(0,0,0,0.1) inset, 0 1px 0 rgba(255,255,255,0.2);
-webkit-transition: all 0.25s ease-in-out;
-moz-transition: all 0.25 ease-in-out;
-o-transition: all 0.25s ease-in-out;
}
.ui-form textarea:hover, .ui-form input:not([type="submit"]):not([type="button"]):not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="range"]):hover {
border: 1px solid #bdbdbd;
-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.2) inset, 0 1px 0 rgba(255,255,255,0.2);
-moz-box-shadow: 0 1px 3px rgba(0,0,0,0.2) inset, 0 1px 0 rgba(255,255,255,0.2);
box-shadow: 0 1px 3px rgba(0,0,0,0.2) inset, 0 1px 0 rgba(255,255,255,0.2);
}
.ui-form textarea:focus, .ui-form input:not([type="submit"]):not([type="button"]):not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="range"]):focus {
border: 1px solid #95bdd4;
-webkit-box-shadow: 0 2px 3px rgba(161,202,226,0.5) inset, 0 1px 0 rgba(255,255,255,0.2);
-moz-box-shadow: 0 2px 3px rgba(161,202,226,0.5) inset, 0 1px 0 rgba(255,255,255,0.2);
box-shadow: 0 2px 3px rgba(161,202,226,0.5) inset, 0 1px 0 rgba(255,255,255,0.2);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
Admi/bullet_black.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 B

BIN
Admi/bullet_toggle_plus.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

62
Admi/functions.js Normal file
View File

@ -0,0 +1,62 @@
function autofilltop3() {
$("#ctl00_cphRoblox_number1name").val($("#1").text());
$("#ctl00_cphRoblox_number2name").val($("#2").text());
$("#ctl00_cphRoblox_number3name").val($("#3").text());
}
function previewNewAlert() {
var hardcodedcolor = $("#ctl00_cphRoblox_alerttype").val();
if (hardcodedcolor == "") {
hardcodedcolor = "[#FF0000]";
}
var alertText = $("#ctl00_cphRoblox_txtText").val();
if (alertText != "") {
$("#previewNewAlert").show("slow");
if ((alertText.toString().indexOf("[") != -1) && (alertText.toString().indexOf("]") != -1)) {
var startColor = alertText.toString().indexOf("[") + 1;
var colorLength = alertText.toString().indexOf("]") - startColor;
var alertColor = alertText.toString().substr(startColor, colorLength);
if (alertColor != "") {
alertText = alertText.replace("[" + alertColor + "]", "");
$("#previewAlertWrapper").css("background-color", alertColor);
}
}
else {
var alertColor = hardcodedcolor.replace("[", "").replace("]", "");
$("#previewAlertWrapper").css("background-color", alertColor);
}
$("#previewAlertText").text(alertText);
}
else {
$("#previewNewAlert").hide("slow");
}
}
function moderateScript(approve, scriptHash, divId) {
$.ajax({
type: "GET",
async: true,
cache: false,
timeout: 50000,
url: "/admi/UserScripts/ScriptApproval.ashx?approved=" + approve + "&hash=" + scriptHash,
success: function(data) {
if (data != null) {
var text = "--Banned";
if (approve == "true")
text = "--Approved";
$("#" + divId).text(text);
}
}
});
}
function displayScript(id) {
$("#ScriptViewPanel").html("<img src='/images/waiting.gif' />");
$.get("/admi/LoadScript.ashx?id=" + id, function(data) {
if (data != null) {
$("#ScriptViewPanel").html(data.toString());
$("#ScriptViewPanel").visible = true;
}
}
);
}

103
Admi/js/ABTests.js Normal file
View File

@ -0,0 +1,103 @@
var SetInactive = function (elem) {
if (!Roblox.Admi.SettingsSemaphore.doesCurrentUserHoldSettingsSemaphore()) {
return false;
}
if (!confirm("Deactivating the experiment will end all currently running versions. Are you sure?"))
return false;
$(elem).parents('form').submit();
};
var NewExperimentVersion = function (elem) {
if (!Roblox.Admi.SettingsSemaphore.doesCurrentUserHoldSettingsSemaphore()) {
return false;
}
var experimentId = $(elem).data('experiment-id');
var url = $('.ab-test-configuration-page').data('new-version-url');
$('#update-enrollment-dialog').html('<div class="loading"></div>').dialog({
title: "New Experiment Version",
modal: true,
resizable: false,
draggable: false,
width: 520,
buttons: {
"Cancel": function () {
$(this).dialog("close");
},
"Submit": function () {
if (!confirm("The experiment version will start as soon as it is created. Are you sure?"))
return;
var form = $('#update-enrollment-dialog').find('form');
var sum = 0;
$(form).find('input[name=variationPercentages]').each(function() {
if (!isNaN(this.value) && this.value.length != 0) {
sum += parseFloat(this.value);
}
});
if (sum != 100) {
alert("Variations must add up to 100");
return;
}
form.submit();
}
}
});
$.ajax({
type: "POST",
url: url + '?experimentId=' + experimentId,
success: function (data) {
$('#update-enrollment-dialog').html(data);
}
});
};
var UpdateExperimentVersion = function (elem) {
if (!Roblox.Admi.SettingsSemaphore.doesCurrentUserHoldSettingsSemaphore()) {
return false;
}
var experimentId = $(elem).data('experiment-id');
var version = $(elem).data('version');
var url = $('.ab-test-configuration-page').data('edit-version-url');
$('#update-enrollment-dialog').html('<div class="loading"></div>').dialog({
title: "Update Experiment Version",
modal: true,
resizable: false,
draggable: false,
width: 520,
buttons: {
"Cancel": function () {
$(this).dialog("close");
},
"Submit": function () {
if (!confirm("Are you sure?"))
return;
$('#update-enrollment-dialog').find('form').submit();
}
}
});
$.ajax({
type: "POST",
url: url + '?experimentId=' + experimentId + '&experimentVersion=' + version,
success: function (data) {
$('#update-enrollment-dialog').html(data);
}
});
};
$(function () {
$('.experiment .version:first-child').prepend('<a class="toggle-show-hide" style="cursor:pointer;">+</a>').show();
$('.ab-test-configuration-page').on('click', '.toggle-show-hide', function (event) {
var parent = $(event.target).parents('.versions');
parent.find('.version, .version-details').toggleClass('hide');
});
});

View File

@ -0,0 +1,42 @@
$(function () {
if ($('.GenericForm').length > 0) {
var IsLimitedRadioBtn = $("input[name = 'ProductOption.IsLimitedEdition'][value='True']");
if (IsLimitedRadioBtn.attr("checked") != undefined) {
$("input[name = 'ProductOption.IsLimitedEdition']").attr("disabled", "true");
$("input[name = 'ProductOption.TotalAvailable']").attr("disabled", "true");
$("input[name = 'Product.PriceInTickets']").attr("disabled", "true");
}
var makeCollectibleBtn = $('div[data-js-make-collectible-btn]');
var makeCollectibleInput = $('input[data-js-make-collectible-input]');
var itemIsCollectible = (makeCollectibleBtn.text() != "Make Collectible");
makeCollectibleBtn.click(function () {
if (!itemIsCollectible) {
makeCollectibleInput.val("true");
} else {
makeCollectibleInput.val("false");
}
$('input[type="submit"]').removeAttr('disabled');
$('input[type="submit"]').click();
});
if (itemIsCollectible) {
$('.GenericForm input[type="submit"]').attr('disabled', 'disabled');
}
var minScale = $("#MarketingBoostPanel").data('mincale');
var maxScale = $("#MarketingBoostPanel").data('maxscale');
var currentValue = $("#BoostAmountScale").val();
$("#slider").slider({
value: currentValue,
min: minScale,
max: maxScale,
step: 1,
slide: function (event, ui) {
$("#BoostAmountScale").val(ui.value);
}
});
$("#BoostAmountScale").val($("#slider").slider("value"));
}
$('form:eq(1)').submit(function () {
$('input[name="Product.AffiliatePercentageFee"]').removeAttr('disabled');
});
});

25
Admi/js/Partners/Get.js Normal file
View File

@ -0,0 +1,25 @@
function deletePixel(deleteAction, updateAction) {
$('form').attr('action', deleteAction);
var confirmed = confirm('Are you sure?');
if (confirmed) {
return true;
} else {
$('form').attr('action', updateAction);
return false;
}
}
$(function () {
$('#AddCampaign').click(function () {
var form = $('#CampaignForm');
form.attr('action', '/partners/' + $('#PartnerID').val() + '/campaigns/create');
var campaignName = $('#AddCampaignName').val();
if (campaignName.trim().length > 0) {
$('input[name=campaignName]').val(campaignName);
form.submit();
} else {
$('#ErrorMessage').text("Campaign name cannot be empty.");
}
});
});

1
Admi/js/blank.txt Normal file
View File

@ -0,0 +1 @@


2
Admi/robots.txt Normal file
View File

@ -0,0 +1,2 @@
User-agent: *
Disallow: /

4301
AllCSS.ashx Normal file

File diff suppressed because it is too large Load Diff

View File

View File

@ -0,0 +1,253 @@
<?php
header('Content-Type: text/plain');
/*require $_SERVER["DOCUMENT_ROOT"] . '/Hexine/api/private/database.php';
require $_SERVER["DOCUMENT_ROOT"] . '/Hexine/api/private/register.php';*/
//coke is very epic
ob_start();
?>
--Game Monitoring Script Arguments--
local jobid, placeid, userId, immediate = ...
function enableStats()
game:SetJobsExtendedStatsWindow(30);
end
function disableStats()
game:SetJobsExtendedStatsWindow(0);
end
function collectStats()
local measures = {}
local appendstring = function(name, value)
local row = "string\t" .. name .. "\t" .. value;
measures[#measures+1] = row;
end
local appenddouble = function(name, value)
local row = "double\t" .. name .. "\t" .. value;
measures[#measures+1] = row;
end
local extendedstats = game:GetJobsExtendedStats();
-- some known column headers.
local NAME = 1
local columnnames = extendedstats[1];
-- setup index of running jobs.
-- fist row is header. start at 2.
local taskmap = {};
for i = 2, #(extendedstats) do
taskmap[extendedstats[i][NAME]] = i;
end
local appendtask = function(taskname)
if taskmap[taskname] then
local taskdata = extendedstats[taskmap[taskname]];
for col = 2, #taskdata do
appenddouble(taskname .. "." .. columnnames[col], taskdata[col])
end
end
end
appendtask("Physics")
appendtask("Render")
appendtask("Heartbeat")
local player = game:GetService("Players").LocalPlayer;
if player then
appenddouble("UserId", game:GetService("Players").LocalPlayer.userId);
end
if jobid then
appendstring("JobId", jobid)
end
if placeid then
appenddouble("PlaceId", placeid)
end
appenddouble("DistributedGameTime", game.Workspace.DistributedGameTime);
if taskmap["Render"] then
appenddouble("Render.interval.peakAbove40ms", game:GetJobIntervalPeakFraction("Render", 0.040));
appenddouble("Render.time.peakAbove50ms", game:GetJobTimePeakFraction("Render", 0.050));
end
if taskmap["Physics"] then
appenddouble("Physics.interval.peakAbove40ms", game:GetJobIntervalPeakFraction("Physics", 0.040));
appenddouble("Physics.time.peakAbove50ms", game:GetJobTimePeakFraction("Physics", 0.050));
end
if stats():FindFirstChild("Network") then
for k, child in pairs(stats().Network:GetChildren()) do
local rpackets = child:FindFirstChild("Received Physics Packets");
if rpackets then
appenddouble("Network." .. tostring(child) .. ".ReceivedPhysicsPackets", rpackets:GetValue())
end
end
end
if stats():FindFirstChild("Workspace") then
appenddouble("Workspace.FPS", stats().Workspace.FPS:GetValue())
appenddouble("Workspace.World.Primitives", stats().Workspace.World.Primitives:GetValue())
end
appenddouble("ElapsedTime", settings().Diagnostics.ElapsedTime);
appenddouble("InstanceCount", settings().Diagnostics.InstanceCount);
appenddouble("JobCount", settings().Diagnostics.JobCount);
appenddouble("PrivateBytes", settings().Diagnostics.PrivateBytes);
appenddouble("ProcessCores", settings().Diagnostics.ProcessCores);
appendstring("RobloxVersion", settings().Diagnostics.RobloxVersion);
-- these can be gleaned from the machine config as well, but they are put here for convenience.
appenddouble("RAM", settings().Diagnostics.RAM);
appendstring("CPU", settings().Diagnostics.CPU);
appenddouble("CpuCount", settings().Diagnostics.CpuCount);
-- TODO: remove pcall and OsPlatformId once OsPlatform is deployed everywhere
pcall(function() appendstring("OsPlatform", settings().Diagnostics.OsPlatform) end)
appenddouble("OsPlatformId", settings().Diagnostics.OsPlatformId)
appenddouble("PlayerCount", game.Players.NumPlayers);
return measures
end
function postStats(t)
local poststring = table.concat(t, "\n")
local player = game:GetService("Players").LocalPlayer;
local id = 0;
local idtype = "None";
if player then
idtype = "PlayerId"
id = game:GetService("Players").LocalPlayer.userId;
end
if placeid then
idtype = "PlaceId"
id = placeid
end
local url = game:GetService("ContentProvider").BaseUrl .. "/Analytics/Measurement.ashx?Type=Game.Performance&IPFilter=primary&SecondaryFilterName=" .. idtype .. "&SecondaryFilterValue=" .. tostring(id);
game:HttpPost(url, poststring, false)
end
enableStats();
-- lua doesn't have built in xor!
-- use this multiplication-based munger instead.
function munge_words(a, b)
return ((a * b) / 0x100) % 0x10000;
end
function collectAndPostStatsMaybe()
local shouldPostProb = 1.0/64.0;
local shouldPost = (math.random() < shouldPostProb)
if jobid then
-- generate a "random" number from the guid.
local s = {string.match(jobid, "(%x%x%x%x)(%x%x%x%x)-(%x%x%x%x)-(%x%x%x%x)-(%x%x%x%x)-(%x%x%x%x)(%x%x%x%x)(%x%x%x%x)")};
local w = 0x0100; -- this is the identity value for munge_words
for i = 1, #s do
w = munge_words(w, tonumber(s[i], 16))
end
shouldPost = w < 0x10000 * shouldPostProb;
end
if shouldPost then
postStats(collectStats())
end
end
if immediate then
postStats(collectStats())
else
delay(1 * 60, function()
while true do
collectAndPostStatsMaybe()
wait(10 * 60)
end
end)
end
function postFrmStats(t, id)
local poststring = table.concat(t, "\n")
local idtype = "PlayerId"
local url = game:GetService("ContentProvider").BaseUrl .. "/Analytics/Measurement.ashx?Type=Game.Performance.FrameRateManager&IPFilter=primary&SecondaryFilterName=" .. idtype .. "&SecondaryFilterValue=" .. tostring(id);
game:HttpPost(url, poststring, false)
end
-- Some sampling condition based on userId
if userId then
if (userId % 100) == 0 then
local frm = stats():FindFirstChild("FrameRateManager")
local closeConnection = game.Close:connect(function()
pcall(function()
local measures = {}
local appenddouble = function(name, value)
local row = "double\t" .. name .. "\t" .. value;
measures[#measures+1] = row;
end
if frm then
frm:GetValue()
for k, child in pairs(frm:GetChildren()) do
appenddouble(child.Name, child:GetValue())
end
end
postFrmStats(measures, userId)
postStats(collectStats())
end)
end)
end
end
<?php
//this is a snippet of code from the coke14 webserver itself
$data = "\n" . ob_get_clean();
/*$data = ("url" . " = " . '"http://sitetest1.roblonium.com"');
function setvar($var, $value)
{
global $data;
$data = ($data . " \n" . $var . " = " . $value);
}
function setphp($var, $customname)
{
if ($customname == null or $customname == "") {
$customname = $var;
}
if ($_GET[$customname] !== null) {
setvar($var, $_GET[$customname]);
}
}
function setglobalvar($var, $value)
{
global $data;
$data = ($data . " \n_G." . $var . " = " . $value);
}
function setglobalphp($var, $customname)
{
if ($customname == null or $customname == "") {
$customname = $var;
}
if ($_GET[$customname] !== null) {
setglobalvar($var, $_GET[$customname]);
}
}
// replace all variables with the proper value
setphp("jobid", "");
setphp("placeid", "");
setphp("userId", "");
setvar("immediate", 0);
$data = str_replace("-- 1273 Rockefeller Street --", $data, $obdata);*/
$key = file_get_contents("file:///C:/signing/privatekey.pem");
openssl_sign($data, $sig, $key, OPENSSL_ALGO_SHA1);
echo "--rbxsig%" . base64_encode($sig) . "%" . $data;
?>

View File

@ -0,0 +1,25 @@
<?php
require $_SERVER["DOCUMENT_ROOT"] . '/Hexine/api/private/database.php';
require $_SERVER["DOCUMENT_ROOT"] . '/Hexine/api/RCC/thumbnailers.php';
if (isset($_GET['Type']) && RCCService::verifyAccessKey($_SERVER['HTTP_ACCESSKEY'])) {
$requestType = $_GET['Type'];
if ($requestType == 'Game.Server.Status') {
$status = $post = file_get_contents('php://input');
if ($status == 0) {
$database->deleteRow("jobs", ["serviceId" => $_SERVER['HTTP_ACCESSKEY']]);
}else {
$database->updateRow("jobs", [
"status" => $status
], ["serviceId" => $_SERVER['HTTP_ACCESSKEY']]);
}
}else {
die(http_response_code(500));
}
}else {
die(http_response_code(409));
}
/*$post = file_get_contents('php://input');
$data = file_get_contents($_SERVER["DOCUMENT_ROOT"]."../Analytics/Logs/Cdn.log") . "\n" . $post;
file_put_contents($_SERVER["DOCUMENT_ROOT"]."../Analytics/Logs/Cdn.log", $data);*/
?>

45
Asset/BodyColors.ashx Normal file
View File

@ -0,0 +1,45 @@
<?php
require $_SERVER["DOCUMENT_ROOT"] . '/Hexine/api/core_functions.php';
header('Content-Type: text/plain');
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
$xmlheader = '<?xml version="1.0" encoding="utf-8" ?>
';
$user = getUserInfoFromUid((int)$_GET['userId']);
if (!$user) {
$user = getUserInfoFromUid(2);
if ($user and $user->CharacterAppearance !== "" and $user->CharacterAppearance !== null) {
$bodyColors = json_decode($user->CharacterAppearance, false)->bodyColors;
}else {
die("Error: Failed to fetch Guest character appearance");
}
}
if ($user->CharacterAppearance !== "" and $user->CharacterAppearance !== null) {
$bodyColors = json_decode($user->CharacterAppearance, false)->bodyColors;
} else{
$user = getUserInfoFromUid(53);
if ($user and $user->CharacterAppearance !== "" and $user->CharacterAppearance !== null) {
$bodyColors = json_decode($user->CharacterAppearance, false)->bodyColors;
}else {
die("Error: Failed to fetch Default character appearance");
}
}
?>
<?=$xmlheader?>
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="BodyColors">
<Properties>
<int name="HeadColor"><?=$bodyColors->HeadColor?></int>
<int name="LeftArmColor"><?=$bodyColors->LeftArmColor?></int>
<int name="LeftLegColor"><?=$bodyColors->LeftLegColor?></int>
<string name="Name">Body Colors</string>
<int name="RightArmColor"><?=$bodyColors->RightArmColor?></int>
<int name="RightLegColor"><?=$bodyColors->RightLegColor?></int>
<int name="TorsoColor"><?=$bodyColors->TorsoColor?></int>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

48
Asset/BodyColors.old.ashx Normal file
View File

@ -0,0 +1,48 @@
<?php
require $_SERVER["DOCUMENT_ROOT"] . '/Hexine/api/private/database.php';
header('Content-Type: text/plain');
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
$xmlheader = '<?xml version="1.0" encoding="utf-8" ?>
';
if (file_exists($_SERVER["DOCUMENT_ROOT"] . '/user/getbodycolors/' . $_GET['userId'])) {
die(file_get_contents($_SERVER["DOCUMENT_ROOT"] . '/user/getbodycolors/' . $_GET['userId']));
} else {
function load($id){
global $database;
global $find;
$find = $database->findRow("public_users", ["Id" => $id], ["Id", "CharacterAppearance"]);
if ($find && $find->rowCount() > 0){
$find = $find->fetch(PDO::FETCH_OBJ);
return true;
}
else {
return false;
}
}
if (load($_GET['userId']) == true and $find->CharacterAppearance !== "" and $find->CharacterAppearance !== null) {
$bodyColors = json_decode($find->CharacterAppearance, false)->bodyColors;
} else{
load(0);
$bodyColors = json_decode($find->CharacterAppearance, false)->bodyColors;
}
}
?>
<?=$xmlheader?>
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="BodyColors">
<Properties>
<int name="HeadColor"><?=$bodyColors->HeadColor?></int>
<int name="LeftArmColor"><?=$bodyColors->LeftArmColor?></int>
<int name="LeftLegColor"><?=$bodyColors->LeftLegColor?></int>
<string name="Name">Body Colors</string>
<int name="RightArmColor"><?=$bodyColors->RightArmColor?></int>
<int name="RightLegColor"><?=$bodyColors->RightLegColor?></int>
<int name="TorsoColor"><?=$bodyColors->TorsoColor?></int>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

42
Asset/CharacterFetch.ashx Normal file
View File

@ -0,0 +1,42 @@
<?php
/*if (file_exists($_SERVER["DOCUMENT_ROOT"] . '/user/getcharapp/' . $_GET['userId'])) {
echo(file_get_contents($_SERVER["DOCUMENT_ROOT"] . '/user/getcharapp/' . $_GET['userId']));
}else {
echo(file_get_contents($_SERVER["DOCUMENT_ROOT"] . '/user/getcharapp/default'));
}*/
header('Content-Type: text/plain');
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
// this is for players in the studio who're doing play solo. they shouldn't look like guests
if ((int)$_GET['userId'] <= 0 && (int)$_GET['exception'] !== 1) {
die();
}
if (file_exists($_SERVER["DOCUMENT_ROOT"] . '/user/getcharapp/' . $_GET['userId'])) {
die(file_get_contents($_SERVER["DOCUMENT_ROOT"] . '/user/getcharapp/' . $_GET['userId']));
}
$charapp = file_get_contents("http://" . $_SERVER['SERVER_NAME'] . "/v1.1/avatar-fetch?userId=".$_GET['userId']);
if (substr($charapp,0,6) == "Error:") {
$charapp = file_get_contents("http://" . $_SERVER['SERVER_NAME'] . "/v1.1/avatar-fetch?userId=53"); //if an error occurs, return the default character appearance
}
$charapp = json_decode($charapp, true);
$charappFinal = $charapp['bodyColorsUrl'].';';
foreach ($charapp['accessoryIds'] as $assetId){
$charappFinal = $charappFinal."http://" . $_SERVER['SERVER_NAME'] . "/Asset?id=".$assetId.';';
}
/* no gears allowed >:(
foreach ($charapp['backpackGearIds'] as $assetId){
if (in_array($assetId, $charapp['equippedGearIds'])) {
$charappFinal = $charappFinal."http://" . $_SERVER['SERVER_NAME'] . "/Asset?id=".$assetId.'&equipped=1;';
}else {
$charappFinal = $charappFinal."http://" . $_SERVER['SERVER_NAME'] . "/Asset?id=".$assetId.';';
}
}
*/
echo($charappFinal);
?>

View File

@ -0,0 +1 @@
0 0 0 00 0 1 0

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