client side code webstorm code cleanup.

pull/23/head
kay.one 11 years ago
parent 375f887539
commit 445ea4f344

@ -7,7 +7,7 @@
<option name="RIGHT_MARGIN" value="190" />
<option name="HTML_ALIGN_ATTRIBUTES" value="false" />
<CssCodeStyleSettings>
<option name="HEX_COLOR_UPPER_CASE" value="true" />
<option name="HEX_COLOR_LOWER_CASE" value="true" />
<option name="HEX_COLOR_LONG_FORMAT" value="true" />
</CssCodeStyleSettings>
<JSCodeStyleSettings>
@ -18,7 +18,6 @@
</XML>
<codeStyleSettings language="CSS">
<indentOptions>
<option name="USE_TAB_CHARACTER" value="true" />
<option name="SMART_TABS" value="true" />
</indentOptions>
</codeStyleSettings>

@ -2,6 +2,7 @@
<profile version="1.0" is_locked="false">
<option name="myName" value="Project Default" />
<option name="myLocal" value="false" />
<inspection_tool class="HtmlFormInputWithoutLabel" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="JSHint" enabled="true" level="ERROR" enabled_by_default="true" />
</profile>
</component>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="" />
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
</component>
</project>

@ -12,21 +12,21 @@ define([
template: 'AddSeries/addSeriesLayoutTemplate',
regions: {
addNew: '#add-new',
addNew : '#add-new',
importExisting: '#import-existing',
rootFolders: '#root-folders'
rootFolders : '#root-folders'
},
ui: {
addNewTab: '.x-add-new-tab',
addNewTab : '.x-add-new-tab',
importExistingTab: '.x-import-existing-tab',
rootFoldersTab: '.x-root-folders-tab'
rootFoldersTab : '.x-root-folders-tab'
},
events: {
'click .x-add-new-tab': 'showAddNew',
'click .x-add-new-tab' : 'showAddNew',
'click .x-import-existing-tab': 'showImport',
'click .x-root-folders-tab': 'showRootFolders'
'click .x-root-folders-tab' : 'showRootFolders'
},
showAddNew: function (e) {

@ -1,5 +1,5 @@
<div class="line row folder-match-result-view">
<div class="span6">
{{title}} {{seriesYear}}
</div>

@ -1,6 +1,7 @@
<div class="row">
<div class="accordion result-list span12 existing-root-folder-view">
<h1>{{path}}</h1>
<div class="x-existing-folder-container" />
<div class="x-existing-folder-container"/>
</div>
</div>

@ -7,11 +7,12 @@
<option value="{{id}}">{{attributes.name}}</option>
{{/each}}
</select>
<div class="btn btn-primary x-btn-search pull-right">
<icon class="icon-search "></icon>
</div>
<div class="row">
<div class="x-folder-name-match-results folder-name-matches span11" />
<div class="x-folder-name-match-results folder-name-matches span11"/>
</div>
</div>

@ -6,6 +6,6 @@
</div>
</div>
<div class="row">
<div id="search-result" class="result-list span12" />
<div id="search-result" class="result-list span12"/>
</div>
</div>

@ -2,7 +2,7 @@
define(['app', 'AddSeries/RootFolders/RootFolderCollection', 'AddSeries/New/SearchResultView', 'Shared/SpinnerView'], function () {
NzbDrone.AddSeries.New.AddNewSeriesView = Backbone.Marionette.Layout.extend({
template: 'AddSeries/New/AddNewSeriesTemplate',
route: 'Series/add/new',
route : 'Series/add/new',
ui: {
seriesSearch: '.search input'
@ -41,7 +41,7 @@ define(['app', 'AddSeries/RootFolders/RootFolderCollection', 'AddSeries/New/Sear
context.searchResult.show(new NzbDrone.Shared.SpinnerView());
context.currentSearchRequest = context.collection.fetch({
data: { term: term },
data : { term: term },
success: function () {
context.searchResult.show(context.resultView);
}

@ -7,14 +7,15 @@
<div class="accordion-inner">
<select class="span7 x-root-folder">
{{#each rootFolders.models}}
<option value="{{id}}">{{attributes.path}}</option>
<option value="{{id}}">{{attributes.path}}</option>
{{/each}}
</select>
<select class="span2 x-quality-profile">
{{#each qualityProfiles.models}}
<option value="{{id}}">{{attributes.name}}</option>
<option value="{{id}}">{{attributes.name}}</option>
{{/each}}
</select>
<div class="btn btn-success pull-right icon-plus x-add">
</div>
</div>

@ -3,13 +3,13 @@ define(['app', 'Shared/NotificationCollection', 'AddSeries/SearchResultCollectio
NzbDrone.AddSeries.New.SearchItemView = Backbone.Marionette.ItemView.extend({
template: "AddSeries/New/SearchResultTemplate",
template : "AddSeries/New/SearchResultTemplate",
className: 'search-item',
ui: {
qualityProfile: '.x-quality-profile',
rootFolder: '.x-root-folder',
addButton: '.x-add'
rootFolder : '.x-root-folder',
addButton : '.x-add'
},
events: {
@ -32,10 +32,10 @@ define(['app', 'Shared/NotificationCollection', 'AddSeries/SearchResultCollectio
var path = rootPath + "\\" + title;
var model = new NzbDrone.Series.SeriesModel({
tvdbId: seriesId,
title: title,
tvdbId : seriesId,
title : title,
qualityProfileId: quality,
path: path
path : path
});
var self = this;
@ -46,9 +46,9 @@ define(['app', 'Shared/NotificationCollection', 'AddSeries/SearchResultCollectio
model.save(undefined, {
success: function () {
var notificationModel = new NzbDrone.Shared.NotificationModel({
title: 'Added',
title : 'Added',
message: title,
level: 'success'
level : 'success'
});
notificationCollection.push(notificationModel);
@ -60,8 +60,8 @@ define(['app', 'Shared/NotificationCollection', 'AddSeries/SearchResultCollectio
NzbDrone.AddSeries.SearchResultView = Backbone.Marionette.CollectionView.extend({
itemView: NzbDrone.AddSeries.New.SearchItemView,
className: 'accordion',
itemView : NzbDrone.AddSeries.New.SearchItemView,
className : 'accordion',
initialize: function () {
this.listenTo(this.collection, 'reset', this.render);
}

@ -2,7 +2,7 @@
define(['app', 'AddSeries/RootFolders/RootFolderModel'], function () {
var rootFolderCollection = Backbone.Collection.extend({
url: NzbDrone.Constants.ApiRoot + '/rootfolder',
url : NzbDrone.Constants.ApiRoot + '/rootfolder',
model: NzbDrone.AddSeries.RootFolders.RootFolderModel
});

@ -2,7 +2,8 @@
<div class="input-prepend input-append nz-input-large x-path span10">
<i class="add-on icon-folder-open"></i>
<input class="input-block-level" type="text" placeholder="Path of the folder to add ...">
<div class="btn icon-plus btn-success x-add" />
<div class="btn icon-plus btn-success x-add"/>
</div>
<div class="span12 result-list" id="current-dirs" />
<div class="span12 result-list" id="current-dirs"/>
</div>

@ -1,11 +1,11 @@
"use strict";
define(['app', 'AddSeries/RootFolders/RootFolderCollection', 'Mixins/AutoComplete'], function (app,rootFolders) {
define(['app', 'AddSeries/RootFolders/RootFolderCollection', 'Mixins/AutoComplete'], function (app, rootFolders) {
NzbDrone.AddSeries.RootFolderItemView = Backbone.Marionette.ItemView.extend({
template: 'AddSeries/RootFolders/RootFolderItemTemplate',
tagName: 'tr',
tagName : 'tr',
events: {
'click .x-remove': 'removeFolder'
@ -25,13 +25,13 @@ define(['app', 'AddSeries/RootFolders/RootFolderCollection', 'Mixins/AutoComplet
NzbDrone.AddSeries.RootDirListView = Backbone.Marionette.CollectionView.extend({
itemView: NzbDrone.AddSeries.RootFolderItemView,
tagName: 'table',
tagName : 'table',
className: 'table table-hover'
});
NzbDrone.AddSeries.RootDirView = Backbone.Marionette.Layout.extend({
template: 'AddSeries/RootFolders/RootFolderTemplate',
route: 'series/add/rootdir',
route : 'series/add/rootdir',
ui: {
pathInput: '.x-path input'
@ -56,9 +56,9 @@ define(['app', 'AddSeries/RootFolders/RootFolderCollection', 'Mixins/AutoComplet
addFolder: function () {
var newDir = new NzbDrone.AddSeries.RootFolders.RootFolderModel(
{
Path: this.ui.pathInput.val()
});
{
Path: this.ui.pathInput.val()
});
var self = this;

@ -1,7 +1,7 @@
"use strict";
define(['app', 'AddSeries/SearchResultModel'], function () {
NzbDrone.AddSeries.SearchResultCollection = Backbone.Collection.extend({
url: NzbDrone.Constants.ApiRoot + '/series/lookup',
url : NzbDrone.Constants.ApiRoot + '/series/lookup',
model: NzbDrone.AddSeries.SearchResultModel
});
});

@ -1,25 +1,25 @@
define(['app', 'AddSeries/RootFolders/RootFolderCollection', 'Quality/QualityProfileCollection'],
function (app, rootFolderCollection, qualityProfileCollection) {
NzbDrone.AddSeries.SearchResultModel = Backbone.Model.extend({
mutators: {
seriesYear: function () {
var date = Date.utc.create(this.get('firstAired')).format('({yyyy})');
NzbDrone.AddSeries.SearchResultModel = Backbone.Model.extend({
mutators: {
seriesYear: function () {
var date = Date.utc.create(this.get('firstAired')).format('({yyyy})');
//don't append year, if the series name already has the name appended.
if (this.get('title').endsWith(date)) {
return "";
} else {
return date;
//don't append year, if the series name already has the name appended.
if (this.get('title').endsWith(date)) {
return "";
} else {
return date;
}
}
},
defaults: {
qualityProfiles: qualityProfileCollection,
rootFolders : rootFolderCollection
}
},
defaults: {
qualityProfiles: qualityProfileCollection,
rootFolders: rootFolderCollection
}
});
});
});

@ -4,7 +4,7 @@
<ul class="nav nav-tabs" id="myTab">
<li><a href="#add-new" class="x-add-new-tab">Add New Series</a></li>
<li><a href="#import-existing" class="x-import-existing-tab">Import Existing Series</a></li>
<li><a href="#root-folders" class ="x-root-folders-tab">TV Folders</a></li>
<li><a href="#root-folders" class="x-root-folders-tab">TV Folders</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane" id="add-new">Add new series.</div>

@ -1,8 +1,8 @@
define(['app', 'Calendar/CalendarModel'], function () {
NzbDrone.Calendar.CalendarCollection = Backbone.Collection.extend({
url: NzbDrone.Constants.ApiRoot + '/calendar',
model: NzbDrone.Calendar.CalendarModel,
comparator: function(model) {
url : NzbDrone.Constants.ApiRoot + '/calendar',
model : NzbDrone.Calendar.CalendarModel,
comparator: function (model) {
return model.get('start');
}
});

@ -2,71 +2,71 @@
define(['app', 'Calendar/CalendarItemView'], function (app) {
NzbDrone.Calendar.CalendarCollectionView = Backbone.Marionette.CompositeView.extend({
itemView: NzbDrone.Calendar.CalendarItemView,
itemView : NzbDrone.Calendar.CalendarItemView,
itemViewContainer: '#events',
template: 'Calendar/CalendarCollectionTemplate',
className: 'row',
template : 'Calendar/CalendarCollectionTemplate',
className : 'row',
ui: {
calendar: '#calendar'
},
initialize: function (context, action, query, collection) {
initialize : function (context, action, query, collection) {
this.collection = collection;
this.calendar = new NzbDrone.Calendar.CalendarCollection();
},
onCompositeCollectionRendered: function() {
onCompositeCollectionRendered: function () {
$(this.ui.calendar).fullCalendar({
allDayDefault: false,
allDayDefault : false,
ignoreTimezone: false,
weekMode: 'variable',
timeFormat: 'h(:mm)tt',
header: {
left: 'prev,next today',
weekMode : 'variable',
timeFormat : 'h(:mm)tt',
header : {
left : 'prev,next today',
center: 'title',
right: 'month,basicWeek'
right : 'month,basicWeek'
},
buttonText: {
buttonText : {
prev: '<i class="icon-arrow-left"></i>',
next: '<i class="icon-arrow-right"></i>'
},
events: this.getEvents,
eventRender: function (event, element) {
events : this.getEvents,
eventRender : function (event, element) {
$(element).addClass(event.statusLevel);
$(element).children('.fc-event-inner').addClass(event.statusLevel);
element.popover({
title: '{seriesTitle} - {season}x{episode} - {episodeTitle}'.assign({
seriesTitle: event.seriesTitle,
season: event.seasonNumber,
episode: event.episodeNumber.pad(2),
title : '{seriesTitle} - {season}x{episode} - {episodeTitle}'.assign({
seriesTitle : event.seriesTitle,
season : event.seasonNumber,
episode : event.episodeNumber.pad(2),
episodeTitle: event.episodeTitle
}),
content: event.overview,
content : event.overview,
placement: 'bottom',
trigger: 'manual'
trigger : 'manual'
});
},
eventMouseover: function(event, jsEvent, view){
eventMouseover: function (event, jsEvent, view) {
$(this).popover('show');
},
eventMouseout: function(event, jsEvent, view){
eventMouseout : function (event, jsEvent, view) {
$(this).popover('hide');
}
});
NzbDrone.Calendar.CalendarCollectionView.Instance = this;
$(this.ui.calendar).fullCalendar('addEventSource', this.calendar.toJSON());
},
getEvents: function(start, end, callback){
},
getEvents : function (start, end, callback) {
var bbView = NzbDrone.Calendar.CalendarCollectionView.Instance;
var startDate = Date.create(start).format(Date.ISO8601_DATETIME);
var endDate = Date.create(end).format(Date.ISO8601_DATETIME);
bbView.calendar.fetch({
data:{ start: startDate, end: endDate },
success:function (calendarCollection) {
data : { start: startDate, end: endDate },
success: function (calendarCollection) {
callback(calendarCollection.toJSON());
}
});

@ -1,13 +1,13 @@
'use strict';
define([
'app',
'Calendar/CalendarCollection'
'app',
'Calendar/CalendarCollection'
], function () {
NzbDrone.Calendar.CalendarItemView = Backbone.Marionette.ItemView.extend({
template: 'Calendar/CalendarItemTemplate',
tagName: 'div',
template : 'Calendar/CalendarItemTemplate',
tagName : 'div',
className: 'event',
onRender: function () {

@ -1,46 +1,51 @@
define(['app'], function (app) {
NzbDrone.Calendar.CalendarModel = Backbone.Model.extend({
mutators: {
title: function () {
title : function () {
return this.get('seriesTitle');
},
allDay: function(){
allDay : function () {
return false;
},
day: function() {
day : function () {
return Date.create(this.get('start')).format('{dd}');
},
month: function(){
month : function () {
return Date.create(this.get('start')).format('{MON}');
},
startTime: function(){
startTime : function () {
var start = Date.create(this.get('start'));
if (start.format('{mm}') === '00')
if (start.format('{mm}') === '00') {
return start.format('{h}{tt}');
}
return start.format('{h}.{mm}{tt}');
},
paddedEpisodeNumber: function(){
paddedEpisodeNumber: function () {
return this.get('episodeNumber');
},
statusLevel: function() {
statusLevel : function () {
var status = this.get('status');
var currentTime = Date.create();
var start = Date.create(this.get('start'));
var end = Date.create(this.get('end'));
if (currentTime.isBetween(start, end))
if (currentTime.isBetween(start, end)) {
return 'warning';
}
if (start.isBefore(currentTime) || status === 'Missing')
if (start.isBefore(currentTime) || status === 'Missing') {
return 'danger';
}
if (status === 'Ready') return 'success';
if (status === 'Ready') {
return 'success';
}
return 'primary';
},
bestDateString: function () {
bestDateString : function () {
return bestDateString(this.get('start'));
},
},

@ -2,42 +2,47 @@
// Pager pagination
// --------------------------------------------------
.pager {
margin: @baseLineHeight 0;
list-style: none;
text-align: center;
.clearfix();
}
.pager li {
display: inline;
}
.pager li > a,
.pager li > span {
display: inline-block;
padding: 5px 14px;
background-color: #fff;
border: 1px solid #ddd;
background-color: #FFFFFF;
border: 1px solid #DDDDDD;
.border-radius(15px);
}
.pager li > a:hover,
.pager li > a:focus {
text-decoration: none;
background-color: #f5f5f5;
background-color: #F5F5F5;
}
.pager .next > a,
.pager .next > span {
float: right;
}
.pager .previous > a,
.pager .previous > span {
float: left;
}
.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
color: @grayLight;
background-color: #fff;
background-color: #FFFFFF;
cursor: default;
}

@ -3,7 +3,6 @@
// Adapted from http://github.com/necolas/normalize.css
// --------------------------------------------------
// Display in IE6-9 and FF3
// -------------------------
@ -35,7 +34,7 @@ video {
// -------------------------
audio:not([controls]) {
display: none;
display: none;
}
// Base settings
@ -44,12 +43,14 @@ audio:not([controls]) {
html {
font-size: 100%;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
// Focus states
a:focus {
.tab-focus();
}
// Hover & Active
a:hover,
a:active {
@ -66,9 +67,11 @@ sup {
line-height: 0;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
@ -105,23 +108,27 @@ textarea {
font-size: 100%;
vertical-align: middle;
}
button,
input {
*overflow: visible; // Inner spacing ie IE6/7
line-height: normal; // FF3/4 have !important on line-height in UA stylesheet
}
button::-moz-focus-inner,
input::-moz-focus-inner { // Inner padding and border oddities in FF3/4
padding: 0;
border: 0;
}
button,
html input[type="button"], // Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls.
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button; // Corrects inability to style clickable `input` types in iOS.
cursor: pointer; // Improves usability and consistency of cursor style between image-type `input` and others.
-webkit-appearance: button; // Corrects inability to style clickable `input` types in iOS.
cursor: pointer; // Improves usability and consistency of cursor style between image-type `input` and others.
}
label,
select,
button,
@ -130,22 +137,24 @@ input[type="reset"],
input[type="submit"],
input[type="radio"],
input[type="checkbox"] {
cursor: pointer; // Improves usability and consistency of cursor style between image-type `input` and others.
cursor: pointer; // Improves usability and consistency of cursor style between image-type `input` and others.
}
input[type="search"] { // Appearance in Safari/Chrome
.box-sizing(content-box);
-webkit-appearance: textfield;
}
input[type="search"]::-webkit-search-decoration,
input[type="search"]::-webkit-search-cancel-button {
-webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5
}
textarea {
overflow: auto; // Remove vertical scrollbar in IE6-9
vertical-align: top; // Readability and alignment cross-browser
}
// Printing
// -------------------------
// Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css
@ -154,7 +163,7 @@ textarea {
* {
text-shadow: none !important;
color: #000 !important; // Black prints faster: h5bp.com/s
color: #000000 !important; // Black prints faster: h5bp.com/s
background: transparent !important;
box-shadow: none !important;
}
@ -181,7 +190,7 @@ textarea {
pre,
blockquote {
border: 1px solid #999;
border: 1px solid #999999;
page-break-inside: avoid;
}

File diff suppressed because it is too large Load Diff

@ -24,10 +24,9 @@ html {
margin: 20px 0 30px 0;
}
#footer-region a:hover {
text-decoration: underline;
}
#footer-region a:hover {
text-decoration: underline;
}
.nz-spinner {
font-size: 56px;
@ -35,7 +34,6 @@ html {
padding: 30px;
}
#notification-region .alert {
margin: 10px;
}
@ -48,7 +46,6 @@ html {
font-size: 12px;
}
#in-sub-nav ul {
margin: 0 0 80px 0;
}
@ -66,41 +63,41 @@ html {
margin-bottom: 2px;
}
.progress .bar {
position: absolute;
overflow: hidden;
}
.progress .progressbar-back-text {
position: absolute;
width: 100%;
height: 100%;
font-size: 12px;
text-align: center;
}
.progress .progressbar-front-text {
display: block;
width: 125px;
font-size: 12px;
text-align: center;
}
.progress .bar {
position: absolute;
overflow: hidden;
}
.progress .progressbar-back-text {
position: absolute;
width: 100%;
height: 100%;
font-size: 12px;
text-align: center;
}
.progress .progressbar-front-text {
display: block;
width: 125px;
font-size: 12px;
text-align: center;
}
/* Todo: Should move this to somehting modal/form specific */
/*label.checkbox {*/
/*font-size: 14px;*/
/*line-height: normal;*/
/*color: #595959;*/
/*font-size: 14px;*/
/*line-height: normal;*/
/*color: #595959;*/
/*}*/
/*label, .form-horizontal input, .form-horizontal select {*/
/*font-size: 14px;*/
/*line-height: 14px;*/
/*font-size: 14px;*/
/*line-height: 14px;*/
/*}*/
/*label.control-label {*/
/*font-size: 16px;*/
/*line-height: 16px;*/
/*font-weight: bold;*/
/*}*/
/*label.control-label {*/
/*font-size: 16px;*/
/*line-height: 16px;*/
/*font-weight: bold;*/
/*}*/

@ -7,132 +7,149 @@
*
*/
.slider {
display: inline-block;
vertical-align: middle;
position: relative;
display: inline-block;
vertical-align: middle;
position: relative;
}
.slider.slider-horizontal {
width: 210px;
height: 20px;
width: 210px;
height: 20px;
}
.slider.slider-horizontal .slider-track {
height: 10px;
width: 100%;
margin-top: -5px;
top: 50%;
left: 0;
height: 10px;
width: 100%;
margin-top: -5px;
top: 50%;
left: 0;
}
.slider.slider-horizontal .slider-selection {
height: 100%;
top: 0;
bottom: 0;
height: 100%;
top: 0;
bottom: 0;
}
.slider.slider-horizontal .slider-handle {
margin-left: -10px;
margin-top: -5px;
margin-left: -10px;
margin-top: -5px;
}
.slider.slider-horizontal .slider-handle.triangle {
border-width: 0 10px 10px 10px;
width: 0;
height: 0;
border-bottom-color: #0480be;
margin-top: 0;
border-width: 0 10px 10px 10px;
width: 0;
height: 0;
border-bottom-color: #0480be;
margin-top: 0;
}
.slider.slider-vertical {
height: 210px;
width: 20px;
height: 210px;
width: 20px;
}
.slider.slider-vertical .slider-track {
width: 10px;
height: 100%;
margin-left: -5px;
left: 50%;
top: 0;
width: 10px;
height: 100%;
margin-left: -5px;
left: 50%;
top: 0;
}
.slider.slider-vertical .slider-selection {
width: 100%;
left: 0;
top: 0;
bottom: 0;
width: 100%;
left: 0;
top: 0;
bottom: 0;
}
.slider.slider-vertical .slider-handle {
margin-left: -5px;
margin-top: -10px;
margin-left: -5px;
margin-top: -10px;
}
.slider.slider-vertical .slider-handle.triangle {
border-width: 10px 0 10px 10px;
width: 1px;
height: 1px;
border-left-color: #0480be;
margin-left: 0;
border-width: 10px 0 10px 10px;
width: 1px;
height: 1px;
border-left-color: #0480be;
margin-left: 0;
}
.slider input {
display: none;
display: none;
}
.slider .tooltip-inner {
white-space: nowrap;
white-space: nowrap;
}
.slider-track {
position: absolute;
cursor: pointer;
background-color: #f7f7f7;
background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}
position: absolute;
cursor: pointer;
background-color: #f7f7f7;
background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}
.slider-selection {
position: absolute;
background-color: #bababa;
background-image: -moz-linear-gradient(top, #f9f9f9, #bababa);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f9f9f9), to(#bababa));
background-image: -webkit-linear-gradient(top, #f9f9f9, #bababa);
background-image: -o-linear-gradient(top, #f9f9f9, #bababa);
background-image: linear-gradient(to bottom, #f9f9f9, #bababa);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0);
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}
position: absolute;
background-color: #bababa;
background-image: -moz-linear-gradient(top, #f9f9f9, #bababa);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f9f9f9), to(#bababa));
background-image: -webkit-linear-gradient(top, #f9f9f9, #bababa);
background-image: -o-linear-gradient(top, #f9f9f9, #bababa);
background-image: linear-gradient(to bottom, #f9f9f9, #bababa);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0);
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}
.slider-handle {
position: absolute;
width: 20px;
height: 20px;
background-color: #3a87ad;
background-image: -moz-linear-gradient(top, #149bdf, #0480be);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
background-image: -o-linear-gradient(top, #149bdf, #0480be);
background-image: linear-gradient(to bottom, #149bdf, #0480be);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);
-webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
/*opacity: 0.8;*/
border: 0px solid transparent;
}
position: absolute;
width: 20px;
height: 20px;
background-color: #3a87ad;
background-image: -moz-linear-gradient(top, #149bdf, #0480be);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
background-image: -o-linear-gradient(top, #149bdf, #0480be);
background-image: linear-gradient(to bottom, #149bdf, #0480be);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
-moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
/*opacity: 0.8;*/
border: 0px solid transparent;
}
.slider-handle.round {
-webkit-border-radius: 20px;
-moz-border-radius: 20px;
border-radius: 20px;
-webkit-border-radius: 20px;
-moz-border-radius: 20px;
border-radius: 20px;
}
.slider-handle.triangle {
background: transparent none;
background: transparent none;
}

@ -7,204 +7,227 @@
* ============================================================ */
/* line 18, ../sass/bootstrapSwitch.scss */
.has-switch {
display: inline-block;
cursor: pointer;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
-ms-border-radius: 5px;
-o-border-radius: 5px;
border-radius: 5px;
border: 1px solid;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
background: #e6e6e6;
position: relative;
text-align: left;
overflow: hidden;
line-height: 8px;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
min-width: 102px;
}
display: inline-block;
cursor: pointer;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
-ms-border-radius: 5px;
-o-border-radius: 5px;
border-radius: 5px;
border: 1px solid;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
background: #e6e6e6;
position: relative;
text-align: left;
overflow: hidden;
line-height: 8px;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
min-width: 102px;
}
/* line 40, ../sass/bootstrapSwitch.scss */
.has-switch.switch-mini {
min-width: 72px;
min-width: 72px;
}
/* line 44, ../sass/bootstrapSwitch.scss */
.has-switch.switch-small {
min-width: 81px;
min-width: 81px;
}
/* line 48, ../sass/bootstrapSwitch.scss */
.has-switch.switch-large {
min-width: 120px;
min-width: 120px;
}
/* line 52, ../sass/bootstrapSwitch.scss */
.has-switch.deactivate {
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
opacity: 0.5;
cursor: default !important;
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
opacity: 0.5;
cursor: default !important;
}
/* line 55, ../sass/bootstrapSwitch.scss */
.has-switch.deactivate label, .has-switch.deactivate span {
cursor: default !important;
cursor: default !important;
}
/* line 59, ../sass/bootstrapSwitch.scss */
.has-switch > div {
display: inline-block;
width: 150%;
position: relative;
top: 0;
display: inline-block;
width: 150%;
position: relative;
top: 0;
}
/* line 65, ../sass/bootstrapSwitch.scss */
.has-switch > div.switch-animate {
-webkit-transition: left 0.5s;
-moz-transition: left 0.5s;
-o-transition: left 0.5s;
transition: left 0.5s;
-webkit-transition: left 0.5s;
-moz-transition: left 0.5s;
-o-transition: left 0.5s;
transition: left 0.5s;
}
/* line 68, ../sass/bootstrapSwitch.scss */
.has-switch > div.switch-off {
left: -50%;
left: -50%;
}
/* line 71, ../sass/bootstrapSwitch.scss */
.has-switch > div.switch-on {
left: 0%;
left: 0%;
}
/* line 75, ../sass/bootstrapSwitch.scss */
.has-switch input[type=checkbox] {
display: none;
display: none;
}
/* line 83, ../sass/bootstrapSwitch.scss */
.has-switch span, .has-switch label {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
cursor: pointer;
position: relative;
display: inline-block;
height: 100%;
padding-bottom: 4px;
padding-top: 4px;
font-size: 14px;
line-height: 20px;
}
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
cursor: pointer;
position: relative;
display: inline-block;
height: 100%;
padding-bottom: 4px;
padding-top: 4px;
font-size: 14px;
line-height: 20px;
}
/* line 96, ../sass/bootstrapSwitch.scss */
.has-switch span.switch-mini, .has-switch label.switch-mini {
padding-bottom: 4px;
padding-top: 4px;
font-size: 10px;
line-height: 9px;
padding-bottom: 4px;
padding-top: 4px;
font-size: 10px;
line-height: 9px;
}
/* line 103, ../sass/bootstrapSwitch.scss */
.has-switch span.switch-small, .has-switch label.switch-small {
padding-bottom: 3px;
padding-top: 3px;
font-size: 12px;
line-height: 18px;
padding-bottom: 3px;
padding-top: 3px;
font-size: 12px;
line-height: 18px;
}
/* line 110, ../sass/bootstrapSwitch.scss */
.has-switch span.switch-large, .has-switch label.switch-large {
padding-bottom: 9px;
padding-top: 9px;
font-size: 16px;
line-height: normal;
padding-bottom: 9px;
padding-top: 9px;
font-size: 16px;
line-height: normal;
}
/* line 118, ../sass/bootstrapSwitch.scss */
.has-switch label {
background: white;
margin-top: -1px;
margin-bottom: -1px;
z-index: 100;
width: 33.333333%;
border-left: 1px solid #e6e6e6;
border-right: 1px solid #e6e6e6;
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #e6e6e6));
background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
background-image: linear-gradient(top, #ffffff, #e6e6e6);
}
background: white;
margin-top: -1px;
margin-bottom: -1px;
z-index: 100;
width: 33.333333%;
border-left: 1px solid #e6e6e6;
border-right: 1px solid #e6e6e6;
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #e6e6e6));
background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
background-image: linear-gradient(top, #ffffff, #e6e6e6);
}
/* line 130, ../sass/bootstrapSwitch.scss */
.has-switch span {
color: white;
text-align: center;
z-index: 1;
width: 33.333333%;
color: white;
text-align: center;
z-index: 1;
width: 33.333333%;
}
/* line 136, ../sass/bootstrapSwitch.scss */
.has-switch span.switch-left {
-moz-border-radius-topleft: 4px;
-webkit-border-top-left-radius: 4px;
border-top-left-radius: 4px;
-moz-border-radius-bottomleft: 4px;
-webkit-border-bottom-left-radius: 4px;
border-bottom-left-radius: 4px;
}
-moz-border-radius-topleft: 4px;
-webkit-border-top-left-radius: 4px;
border-top-left-radius: 4px;
-moz-border-radius-bottomleft: 4px;
-webkit-border-bottom-left-radius: 4px;
border-bottom-left-radius: 4px;
}
/* line 140, ../sass/bootstrapSwitch.scss */
.has-switch span.switch-right {
color: black;
-moz-border-radius-topright: 4px;
-webkit-border-top-right-radius: 4px;
border-top-right-radius: 4px;
-moz-border-radius-bottomright: 4px;
-webkit-border-bottom-right-radius: 4px;
border-bottom-right-radius: 4px;
background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ffffff), color-stop(100%, #e6e6e6));
background-image: -webkit-linear-gradient(bottom, #ffffff, #e6e6e6);
background-image: -moz-linear-gradient(bottom, #ffffff, #e6e6e6);
background-image: -o-linear-gradient(bottom, #ffffff, #e6e6e6);
background-image: linear-gradient(bottom, #ffffff, #e6e6e6);
}
color: black;
-moz-border-radius-topright: 4px;
-webkit-border-top-right-radius: 4px;
border-top-right-radius: 4px;
-moz-border-radius-bottomright: 4px;
-webkit-border-bottom-right-radius: 4px;
border-bottom-right-radius: 4px;
background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ffffff), color-stop(100%, #e6e6e6));
background-image: -webkit-linear-gradient(bottom, #ffffff, #e6e6e6);
background-image: -moz-linear-gradient(bottom, #ffffff, #e6e6e6);
background-image: -o-linear-gradient(bottom, #ffffff, #e6e6e6);
background-image: linear-gradient(bottom, #ffffff, #e6e6e6);
}
/* line 147, ../sass/bootstrapSwitch.scss */
.has-switch span.switch-primary, .has-switch span.switch-left {
color: white;
background: #0088cc;
background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #0088cc), color-stop(100%, #0055cc));
background-image: -webkit-linear-gradient(bottom, #0088cc, #0055cc);
background-image: -moz-linear-gradient(bottom, #0088cc, #0055cc);
background-image: -o-linear-gradient(bottom, #0088cc, #0055cc);
background-image: linear-gradient(bottom, #0088cc, #0055cc);
}
color: white;
background: #0088cc;
background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #0088cc), color-stop(100%, #0055cc));
background-image: -webkit-linear-gradient(bottom, #0088cc, #0055cc);
background-image: -moz-linear-gradient(bottom, #0088cc, #0055cc);
background-image: -o-linear-gradient(bottom, #0088cc, #0055cc);
background-image: linear-gradient(bottom, #0088cc, #0055cc);
}
/* line 152, ../sass/bootstrapSwitch.scss */
.has-switch span.switch-info {
color: white;
background: #5bc0de;
background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #5bc0de), color-stop(100%, #2f96b4));
background-image: -webkit-linear-gradient(bottom, #5bc0de, #2f96b4);
background-image: -moz-linear-gradient(bottom, #5bc0de, #2f96b4);
background-image: -o-linear-gradient(bottom, #5bc0de, #2f96b4);
background-image: linear-gradient(bottom, #5bc0de, #2f96b4);
}
color: white;
background: #5bc0de;
background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #5bc0de), color-stop(100%, #2f96b4));
background-image: -webkit-linear-gradient(bottom, #5bc0de, #2f96b4);
background-image: -moz-linear-gradient(bottom, #5bc0de, #2f96b4);
background-image: -o-linear-gradient(bottom, #5bc0de, #2f96b4);
background-image: linear-gradient(bottom, #5bc0de, #2f96b4);
}
/* line 158, ../sass/bootstrapSwitch.scss */
.has-switch span.switch-success {
color: white;
background: #62c462;
background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #62c462), color-stop(100%, #51a351));
background-image: -webkit-linear-gradient(bottom, #62c462, #51a351);
background-image: -moz-linear-gradient(bottom, #62c462, #51a351);
background-image: -o-linear-gradient(bottom, #62c462, #51a351);
background-image: linear-gradient(bottom, #62c462, #51a351);
}
color: white;
background: #62c462;
background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #62c462), color-stop(100%, #51a351));
background-image: -webkit-linear-gradient(bottom, #62c462, #51a351);
background-image: -moz-linear-gradient(bottom, #62c462, #51a351);
background-image: -o-linear-gradient(bottom, #62c462, #51a351);
background-image: linear-gradient(bottom, #62c462, #51a351);
}
/* line 164, ../sass/bootstrapSwitch.scss */
.has-switch span.switch-warning {
color: white;
background: #dbb450;
background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #dbb450), color-stop(100%, #f89406));
background-image: -webkit-linear-gradient(bottom, #dbb450, #f89406);
background-image: -moz-linear-gradient(bottom, #dbb450, #f89406);
background-image: -o-linear-gradient(bottom, #dbb450, #f89406);
background-image: linear-gradient(bottom, #dbb450, #f89406);
}
color: white;
background: #dbb450;
background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #dbb450), color-stop(100%, #f89406));
background-image: -webkit-linear-gradient(bottom, #dbb450, #f89406);
background-image: -moz-linear-gradient(bottom, #dbb450, #f89406);
background-image: -o-linear-gradient(bottom, #dbb450, #f89406);
background-image: linear-gradient(bottom, #dbb450, #f89406);
}
/* line 170, ../sass/bootstrapSwitch.scss */
.has-switch span.switch-danger {
color: white;
background: #ee5f5b;
background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ee5f5b), color-stop(100%, #bd362f));
background-image: -webkit-linear-gradient(bottom, #ee5f5b, #bd362f);
background-image: -moz-linear-gradient(bottom, #ee5f5b, #bd362f);
background-image: -o-linear-gradient(bottom, #ee5f5b, #bd362f);
background-image: linear-gradient(bottom, #ee5f5b, #bd362f);
color: white;
background: #ee5f5b;
background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ee5f5b), color-stop(100%, #bd362f));
background-image: -webkit-linear-gradient(bottom, #ee5f5b, #bd362f);
background-image: -moz-linear-gradient(bottom, #ee5f5b, #bd362f);
background-image: -o-linear-gradient(bottom, #ee5f5b, #bd362f);
background-image: linear-gradient(bottom, #ee5f5b, #bd362f);
}

@ -1,17 +1,18 @@
 .form-horizontal .controls i {
font-size: 16px;
/*color: #3A87AD;*/ /* Info blue */
color: #595959;
cursor: default;
}
.form-horizontal .controls i {
font-size: 16px;
/*color: #3A87AD;*/
/* Info blue */
color: #595959;
cursor: default;
}
.form-horizontal .controls i.warning {
color: #F89406;
}
.form-horizontal .controls i.warning {
color: #f89406;
}
.form-horizontal .controls i.danger {
color: #B94A48;
}
.form-horizontal .controls i.danger {
color: #b94a48;
}
.help-inline-checkbox {
float: left;

@ -9,29 +9,26 @@
*
*/
.fc {
direction: ltr;
text-align: left;
}
.fc table {
border-collapse: collapse;
border-spacing: 0;
}
html .fc,
.fc table {
font-size: 1em;
}
.fc td,
.fc th {
padding: 0;
vertical-align: top;
}
.fc table {
border-collapse: collapse;
border-spacing: 0;
}
html .fc,
.fc table {
font-size: 1em;
}
.fc td,
.fc th {
padding: 0;
vertical-align: top;
}
/* Header
------------------------------------------------------------------------*/
@ -59,10 +56,10 @@
vertical-align: top;
}
.fc-header-title h2 {
margin-top: 0;
white-space: nowrap;
}
.fc-header-title h2 {
margin-top: 0;
white-space: nowrap;
}
.fc .fc-header-space {
padding-left: 10px;
@ -103,8 +100,6 @@
z-index: 4;
}
/* Content
------------------------------------------------------------------------*/
@ -117,28 +112,28 @@
/*overflow: hidden;*/
}
/* Cell Styles
------------------------------------------------------------------------*/
.fc-widget-header, /* <th>, usually */
.fc-widget-content { /* <td>, usually */
border: 1px solid #ccc;
.fc-widget-content {
/* <td>, usually */
border: 1px solid #cccccc;
}
.fc-state-highlight { /* <td> today cell */ /* TODO: add .fc-today to <th> */
background: #ffc;
.fc-state-highlight {
/* <td> today cell */
/* TODO: add .fc-today to <th> */
background: #ffffcc;
}
.fc-cell-overlay { /* semi-transparent rectangle while dragging */
background: #9cf;
.fc-cell-overlay {
/* semi-transparent rectangle while dragging */
background: #99ccff;
opacity: .2;
filter: alpha(opacity=20); /* for IE */
}
/* Buttons
------------------------------------------------------------------------*/
@ -148,7 +143,8 @@
cursor: pointer;
}
.fc-state-default { /* non-theme */
.fc-state-default {
/* non-theme */
border-style: solid;
border-width: 1px 0;
}
@ -159,7 +155,8 @@
overflow: hidden;
}
.fc-state-default .fc-button-inner { /* non-theme */
.fc-state-default .fc-button-inner {
/* non-theme */
border-style: solid;
border-width: 0 1px;
}
@ -173,21 +170,21 @@
white-space: nowrap;
}
/* icon (for jquery ui) */
/* icon (for jquery ui) */
.fc-button-content .fc-icon-wrap {
position: relative;
float: left;
top: 50%;
}
.fc-button-content .fc-icon-wrap {
position: relative;
float: left;
top: 50%;
}
.fc-button-content .ui-icon {
position: relative;
float: left;
margin-top: -50%;
*margin-top: 0;
*top: -50%;
}
.fc-button-content .ui-icon {
position: relative;
float: left;
margin-top: -50%;
*margin-top: 0;
*top: -50%;
}
/* gloss effect */
@ -197,63 +194,61 @@
left: 0;
}
.fc-state-default .fc-button-effect span {
position: absolute;
top: -100px;
left: 0;
width: 500px;
height: 100px;
border-width: 100px 0 0 1px;
border-style: solid;
border-color: #fff;
background: #444;
opacity: .09;
filter: alpha(opacity=9);
}
.fc-state-default .fc-button-effect span {
position: absolute;
top: -100px;
left: 0;
width: 500px;
height: 100px;
border-width: 100px 0 0 1px;
border-style: solid;
border-color: #ffffff;
background: #444444;
opacity: .09;
filter: alpha(opacity=9);
}
/* button states (determines colors) */
.fc-state-default,
.fc-state-default .fc-button-inner {
border-style: solid;
border-color: #ccc #bbb #aaa;
background: #F3F3F3;
color: #000;
border-color: #cccccc #bbbbbb #aaaaaa;
background: #f3f3f3;
color: #000000;
}
.fc-state-hover,
.fc-state-hover .fc-button-inner {
border-color: #999;
border-color: #999999;
}
.fc-state-down,
.fc-state-down .fc-button-inner {
border-color: #555;
background: #777;
border-color: #555555;
background: #777777;
}
.fc-state-active,
.fc-state-active .fc-button-inner {
border-color: #555;
background: #777;
color: #fff;
border-color: #555555;
background: #777777;
color: #ffffff;
}
.fc-state-disabled,
.fc-state-disabled .fc-button-inner {
color: #999;
border-color: #ddd;
color: #999999;
border-color: #dddddd;
}
.fc-state-disabled {
cursor: default;
}
.fc-state-disabled .fc-button-effect {
display: none;
}
.fc-state-disabled .fc-button-effect {
display: none;
}
/* Global Event Styles
------------------------------------------------------------------------*/
@ -279,9 +274,9 @@ a.fc-event {
}
.fc-event-skin {
border-color: #36c; /* default BORDER color */
background-color: #36c; /* default BACKGROUND color */
color: #fff; /* default TEXT color */
border-color: #3366cc; /* default BORDER color */
background-color: #3366cc; /* default BACKGROUND color */
color: #ffffff; /* default TEXT color */
}
.fc-event-inner {
@ -298,7 +293,8 @@ a.fc-event {
padding: 0 1px;
}
.fc .ui-resizable-handle { /*** TODO: don't use ui-resizable anymore, change class ***/
.fc .ui-resizable-handle {
/*** TODO: don't use ui-resizable anymore, change class ***/
display: block;
position: absolute;
z-index: 99999;
@ -307,8 +303,6 @@ a.fc-event {
line-height: 50%; /* */
}
/* Horizontal Events
------------------------------------------------------------------------*/
@ -317,29 +311,27 @@ a.fc-event {
margin-bottom: 1px;
}
/* resizable */
.fc-event-hori .ui-resizable-e {
top: 0 !important; /* importants override pre jquery ui 1.7 styles */
right: -3px !important;
width: 7px !important;
height: 100% !important;
cursor: e-resize;
}
.fc-event-hori .ui-resizable-w {
top: 0 !important;
left: -3px !important;
width: 7px !important;
height: 100% !important;
cursor: w-resize;
}
/* resizable */
.fc-event-hori .ui-resizable-handle {
_padding-bottom: 14px; /* IE6 had 0 height */
}
.fc-event-hori .ui-resizable-e {
top: 0 !important; /* importants override pre jquery ui 1.7 styles */
right: -3px !important;
width: 7px !important;
height: 100% !important;
cursor: e-resize;
}
.fc-event-hori .ui-resizable-w {
top: 0 !important;
left: -3px !important;
width: 7px !important;
height: 100% !important;
cursor: w-resize;
}
.fc-event-hori .ui-resizable-handle {
_padding-bottom: 14px; /* IE6 had 0 height */
}
/* Fake Rounded Corners (for buttons and events)
------------------------------------------------------------*/
@ -348,37 +340,35 @@ a.fc-event {
margin-left: 1px;
}
.fc-corner-left .fc-button-inner,
.fc-corner-left .fc-event-inner {
margin-left: -1px;
}
.fc-corner-left .fc-button-inner,
.fc-corner-left .fc-event-inner {
margin-left: -1px;
}
.fc-corner-right {
margin-right: 1px;
}
.fc-corner-right .fc-button-inner,
.fc-corner-right .fc-event-inner {
margin-right: -1px;
}
.fc-corner-right .fc-button-inner,
.fc-corner-right .fc-event-inner {
margin-right: -1px;
}
.fc-corner-top {
margin-top: 1px;
}
.fc-corner-top .fc-event-inner {
margin-top: -1px;
}
.fc-corner-top .fc-event-inner {
margin-top: -1px;
}
.fc-corner-bottom {
margin-bottom: 1px;
}
.fc-corner-bottom .fc-event-inner {
margin-bottom: -1px;
}
.fc-corner-bottom .fc-event-inner {
margin-bottom: -1px;
}
/* Fake Rounded Corners SPECIFICALLY FOR EVENTS
-----------------------------------------------------------------*/
@ -399,8 +389,6 @@ a.fc-event {
border-bottom-width: 1px;
}
/* Reusable Separate-border Table
------------------------------------------------------------*/
@ -413,10 +401,10 @@ table.fc-border-separate {
border-width: 1px 0 0 1px;
}
.fc-border-separate th.fc-last,
.fc-border-separate td.fc-last {
border-right-width: 1px;
}
.fc-border-separate th.fc-last,
.fc-border-separate td.fc-last {
border-right-width: 1px;
}
.fc-border-separate tr.fc-last th,
.fc-border-separate tr.fc-last td {
@ -428,8 +416,6 @@ table.fc-border-separate {
border-top-width: 0;
}
/* Month View, Basic Week View, Basic Day View
------------------------------------------------------------------------*/
@ -446,8 +432,8 @@ table.fc-border-separate {
opacity: 0.3;
filter: alpha(opacity=30); /* for IE */
/* opacity with small font can sometimes look too faded
might want to set the 'color' property instead
making day-numbers bold also fixes the problem */
might want to set the 'color' property instead
making day-numbers bold also fixes the problem */
}
.fc-grid .fc-day-content {
@ -471,8 +457,6 @@ table.fc-border-separate {
float: right;
}
/* Agenda Week View, Agenda Day View
------------------------------------------------------------------------*/
@ -526,7 +510,7 @@ table.fc-border-separate {
}
.fc-widget-header .fc-agenda-divider-inner {
background: #eee;
background: #eeeeee;
}
/* slot rows */
@ -540,9 +524,9 @@ table.fc-border-separate {
background: none;
}
.fc-agenda-slots td div {
height: 20px;
}
.fc-agenda-slots td div {
height: 20px;
}
.fc-agenda-slots tr.fc-slot0 th,
.fc-agenda-slots tr.fc-slot0 td {
@ -554,11 +538,9 @@ table.fc-border-separate {
border-top-style: dotted;
}
.fc-agenda-slots tr.fc-minor th.ui-widget-header {
*border-top-style: solid; /* doesn't work with background in IE6/7 */
}
.fc-agenda-slots tr.fc-minor th.ui-widget-header {
*border-top-style: solid; /* doesn't work with background in IE6/7 */
}
/* Vertical Events
------------------------------------------------------------------------*/
@ -567,30 +549,31 @@ table.fc-border-separate {
border-width: 0 1px;
}
.fc-event-vert .fc-event-head,
.fc-event-vert .fc-event-content {
position: relative;
z-index: 2;
width: 100%;
overflow: hidden;
}
.fc-event-vert .fc-event-time {
white-space: nowrap;
font-size: 10px;
}
.fc-event-vert .fc-event-bg { /* makes the event lighter w/ a semi-transparent overlay */
position: absolute;
z-index: 1;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #fff;
opacity: .3;
filter: alpha(opacity=30);
}
.fc-event-vert .fc-event-head,
.fc-event-vert .fc-event-content {
position: relative;
z-index: 2;
width: 100%;
overflow: hidden;
}
.fc-event-vert .fc-event-time {
white-space: nowrap;
font-size: 10px;
}
.fc-event-vert .fc-event-bg {
/* makes the event lighter w/ a semi-transparent overlay */
position: absolute;
z-index: 1;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #ffffff;
opacity: .3;
filter: alpha(opacity=30);
}
.fc .ui-draggable-dragging .fc-event-bg, /* TODO: something nicer like .fc-opacity */
.fc-select-helper .fc-event-bg {
@ -611,6 +594,7 @@ table.fc-border-separate {
cursor: s-resize;
}
.fc-agenda .ui-resizable-resizing { /* TODO: better selector */
.fc-agenda .ui-resizable-resizing {
/* TODO: better selector */
_overflow: hidden;
}

@ -6,129 +6,130 @@
width: 100%;
}
.tablesorter-bootstrap .tablesorter-header,
.tablesorter-bootstrap tfoot th,
.tablesorter-bootstrap tfoot td {
font: bold 14px/20px Arial, Sans-serif;
position: relative;
padding: 8px;
margin: 0 0 18px;
list-style: none;
background-color: #FBFBFB;
background-image: -moz-linear-gradient(top, white, #efefef);
background-image: -ms-linear-gradient(top, white, #efefef);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(white), to(#efefef));
background-image: -webkit-linear-gradient(top, white, #efefef);
background-image: -o-linear-gradient(top, white, #efefef);
background-image: linear-gradient(to bottom, white, #efefef);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#efefef', GradientType=0);
background-repeat: repeat-x;
-webkit-box-shadow: inset 0 1px 0 white;
-moz-box-shadow: inset 0 1px 0 #ffffff;
box-shadow: inset 0 1px 0 white;
}
.tablesorter-bootstrap .tablesorter-header {
cursor: pointer;
}
.tablesorter-bootstrap .tablesorter-header-inner {
position: relative;
padding: 4px 18px 4px 4px;
}
/* bootstrap uses <i> for icons */
.tablesorter-bootstrap .tablesorter-header i {
position: absolute;
right: 2px;
top: 50%;
margin-top: -7px; /* half the icon height; older IE doesn't like this */
width: 14px;
height: 14px;
background-repeat: no-repeat;
line-height: 14px;
display: inline-block;
}
.tablesorter-bootstrap .bootstrap-icon-unsorted {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOCAYAAAD5YeaVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWVJREFUeNqUUL9Lw2AUTGP8mqGlpBQkNeCSRcckEBcHq1jImMElToKuDvpHFMGhU0BQcHBwLji6CE1B4uB/INQsDi4d2jQ/fPeZxo764OV6915f7lLJ81xot9tCURXqdVEUr7IsO6ffH9Q5BlEUCaLwWxWqTcbYnaIoh0Dw4gAvcWlxq1qt9hqNxg6hUGAP+uIPUrGs0qXLer2+v/pTX6QpxLtkc2U2m53ACb8sSdIDXerSEms2m6+DweAICA4d89KGbduf9MpEVdXQ9/2LVqv1CASHjjn3iq/x1xKFfxQPqGnada1W86bT6SiO42OS3qk3KPStLMvbk8nkfjwen/LLuq6blFymMB0KdUPSGhAcOualjX6/f0bCiC7NaWGPQr0BwaFjzn0gYJqmLAiCA8/zni3LmhuGkQPBoWPOPwQeaPIqD4fDruu6L6Zp5kBw6IudchmdJAkLw3DXcZwnIPjy/FuAAQCiqqWWCAFKcwAAAABJRU5ErkJggg==);
}
/* since bootstrap (table-striped) uses nth-child(), we just use this to add a zebra stripe color */
.tablesorter-bootstrap tr.odd td {
background-color: #f9f9f9;
}
.tablesorter-bootstrap tbody > .odd:hover > td,
.tablesorter-bootstrap tbody > .even:hover > td {
background-color: #f5f5f5;
}
.tablesorter-bootstrap tr.even td {
background-color: #fff;
}
/* processing icon */
.tablesorter-bootstrap .tablesorter-processing {
background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=');
position: absolute;
z-index: 1000;
}
/* filter widget */
.tablesorter-bootstrap .tablesorter-filter-row .tablesorter-filter {
width: 98%;
height: inherit;
margin: 0 auto;
padding: 4px 6px;
background-color: #fff;
color: #333;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
-webkit-transition: height 0.1s ease;
-moz-transition: height 0.1s ease;
-o-transition: height 0.1s ease;
transition: height 0.1s ease;
}
.tablesorter-bootstrap .tablesorter-filter-row td {
background: #eee;
line-height: normal;
text-align: center;
padding: 4px 6px;
vertical-align: middle;
-webkit-transition: line-height 0.1s ease;
-moz-transition: line-height 0.1s ease;
-o-transition: line-height 0.1s ease;
transition: line-height 0.1s ease;
}
/* hidden filter row */
.tablesorter-bootstrap .tablesorter-filter-row.hideme td {
padding: 2px; /* change this to modify the thickness of the closed border row */
margin: 0;
line-height: 0;
}
.tablesorter-bootstrap .tablesorter-filter-row.hideme .tablesorter-filter {
height: 1px;
min-height: 0;
border: 0;
padding: 0;
margin: 0;
/* don't use visibility: hidden because it disables tabbing */
opacity: 0;
filter: alpha(opacity=0);
}
/* pager plugin */
.tablesorter-bootstrap .tablesorter-pager select {
padding: 4px 6px;
}
.tablesorter-bootstrap .tablesorter-pager .pagedisplay {
border: 0;
}
.tablesorter-bootstrap .tablesorter-header,
.tablesorter-bootstrap tfoot th,
.tablesorter-bootstrap tfoot td {
font: bold 14px/20px Arial, Sans-serif;
position: relative;
padding: 8px;
margin: 0 0 18px;
list-style: none;
background-color: #fbfbfb;
background-image: -moz-linear-gradient(top, white, #efefef);
background-image: -ms-linear-gradient(top, white, #efefef);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(white), to(#efefef));
background-image: -webkit-linear-gradient(top, white, #efefef);
background-image: -o-linear-gradient(top, white, #efefef);
background-image: linear-gradient(to bottom, white, #efefef);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#efefef', GradientType=0);
background-repeat: repeat-x;
-webkit-box-shadow: inset 0 1px 0 white;
-moz-box-shadow: inset 0 1px 0 #ffffff;
box-shadow: inset 0 1px 0 white;
}
.tablesorter-bootstrap .tablesorter-header {
cursor: pointer;
}
.tablesorter-bootstrap .tablesorter-header-inner {
position: relative;
padding: 4px 18px 4px 4px;
}
/* bootstrap uses <i> for icons */
.tablesorter-bootstrap .tablesorter-header i {
position: absolute;
right: 2px;
top: 50%;
margin-top: -7px; /* half the icon height; older IE doesn't like this */
width: 14px;
height: 14px;
background-repeat: no-repeat;
line-height: 14px;
display: inline-block;
}
.tablesorter-bootstrap .bootstrap-icon-unsorted {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOCAYAAAD5YeaVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWVJREFUeNqUUL9Lw2AUTGP8mqGlpBQkNeCSRcckEBcHq1jImMElToKuDvpHFMGhU0BQcHBwLji6CE1B4uB/INQsDi4d2jQ/fPeZxo764OV6915f7lLJ81xot9tCURXqdVEUr7IsO6ffH9Q5BlEUCaLwWxWqTcbYnaIoh0Dw4gAvcWlxq1qt9hqNxg6hUGAP+uIPUrGs0qXLer2+v/pTX6QpxLtkc2U2m53ACb8sSdIDXerSEms2m6+DweAICA4d89KGbduf9MpEVdXQ9/2LVqv1CASHjjn3iq/x1xKFfxQPqGnada1W86bT6SiO42OS3qk3KPStLMvbk8nkfjwen/LLuq6blFymMB0KdUPSGhAcOualjX6/f0bCiC7NaWGPQr0BwaFjzn0gYJqmLAiCA8/zni3LmhuGkQPBoWPOPwQeaPIqD4fDruu6L6Zp5kBw6IudchmdJAkLw3DXcZwnIPjy/FuAAQCiqqWWCAFKcwAAAABJRU5ErkJggg==);
}
/* since bootstrap (table-striped) uses nth-child(), we just use this to add a zebra stripe color */
.tablesorter-bootstrap tr.odd td {
background-color: #f9f9f9;
}
.tablesorter-bootstrap tbody > .odd:hover > td,
.tablesorter-bootstrap tbody > .even:hover > td {
background-color: #f5f5f5;
}
.tablesorter-bootstrap tr.even td {
background-color: #ffffff;
}
/* processing icon */
.tablesorter-bootstrap .tablesorter-processing {
background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=');
position: absolute;
z-index: 1000;
}
/* filter widget */
.tablesorter-bootstrap .tablesorter-filter-row .tablesorter-filter {
width: 98%;
height: inherit;
margin: 0 auto;
padding: 4px 6px;
background-color: #ffffff;
color: #333333;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
-webkit-transition: height 0.1s ease;
-moz-transition: height 0.1s ease;
-o-transition: height 0.1s ease;
transition: height 0.1s ease;
}
.tablesorter-bootstrap .tablesorter-filter-row td {
background: #eeeeee;
line-height: normal;
text-align: center;
padding: 4px 6px;
vertical-align: middle;
-webkit-transition: line-height 0.1s ease;
-moz-transition: line-height 0.1s ease;
-o-transition: line-height 0.1s ease;
transition: line-height 0.1s ease;
}
/* hidden filter row */
.tablesorter-bootstrap .tablesorter-filter-row.hideme td {
padding: 2px; /* change this to modify the thickness of the closed border row */
margin: 0;
line-height: 0;
}
.tablesorter-bootstrap .tablesorter-filter-row.hideme .tablesorter-filter {
height: 1px;
min-height: 0;
border: 0;
padding: 0;
margin: 0;
/* don't use visibility: hidden because it disables tabbing */
opacity: 0;
filter: alpha(opacity=0);
}
/* pager plugin */
.tablesorter-bootstrap .tablesorter-pager select {
padding: 4px 6px;
}
.tablesorter-bootstrap .tablesorter-pager .pagedisplay {
border: 0;
}
th {
background-repeat: no-repeat;

@ -3,6 +3,7 @@
.tablesorter-pager.disabled {
display: none;
}
/* hide or fade out pager arrows when the first or last row is visible */
.tablesorter-pager .disabled {
/* visibility: hidden */

File diff suppressed because it is too large Load Diff

@ -7,16 +7,15 @@
word-wrap: break-word;
}
.toast-message a,
.toast-message label {
color: #FFF;
}
.toast-message a:hover {
color: #CCC;
text-decoration: none;
}
.toast-message a,
.toast-message label {
color: #ffffff;
}
.toast-message a:hover {
color: #cccccc;
text-decoration: none;
}
.toast-top-full-width {
top: 0;
@ -55,42 +54,42 @@
z-index: 999999;
}
#toast-container > div {
margin: 0 0 6px;
padding: 15px 15px 15px 50px;
width: 300px;
-moz-border-radius: 3px 3px 3px 3px;
-webkit-border-radius: 3px 3px 3px 3px;
border-radius: 3px 3px 3px 3px;
background-position: 15px center;
background-repeat: no-repeat;
-moz-box-shadow: 0 0 12px #999999;
-webkit-box-shadow: 0 0 12px #999999;
box-shadow: 0 0 12px #999999;
color: #FFFFFF;
opacity: 0.8;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";
filter: alpha(opacity=80);
}
#toast-container > div {
margin: 0 0 6px;
padding: 15px 15px 15px 50px;
width: 300px;
-moz-border-radius: 3px 3px 3px 3px;
-webkit-border-radius: 3px 3px 3px 3px;
border-radius: 3px 3px 3px 3px;
background-position: 15px center;
background-repeat: no-repeat;
-moz-box-shadow: 0 0 12px #999999;
-webkit-box-shadow: 0 0 12px #999999;
box-shadow: 0 0 12px #999999;
color: #ffffff;
opacity: 0.8;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";
filter: alpha(opacity=80);
}
.toast {
background-color: #030303;
}
.toast-success {
background-color: #51A351;
background-color: #51a351;
}
.toast-error {
background-color: #BD362F;
background-color: #bd362f;
}
.toast-info {
background-color: #2F96B4;
background-color: #2f96b4;
}
.toast-warning {
background-color: #F89406;
background-color: #f89406;
}
#toast-container > :hover {

@ -1,105 +1,105 @@
define(['app', 'Shared/ModalRegion', 'AddSeries/AddSeriesLayout',
'Series/Index/SeriesIndexCollectionView', 'Upcoming/UpcomingCollectionView',
'Calendar/CalendarCollectionView', 'Shared/NotificationView',
'Shared/NotFoundView', 'MainMenuView', 'HeaderView',
'Series/Details/SeriesDetailsView', 'Series/EpisodeCollection',
'Settings/SettingsLayout', 'Missing/MissingCollectionView'],
function (app, modalRegion) {
var controller = Backbone.Marionette.Controller.extend({
addSeries: function (action, query) {
this.setTitle('Add Series');
NzbDrone.mainRegion.show(new NzbDrone.AddSeries.AddSeriesLayout(this, action, query));
},
series: function (action, query) {
this.setTitle('NzbDrone');
NzbDrone.mainRegion.show(new NzbDrone.Series.Index.SeriesIndexCollectionView());
},
upcoming: function (action, query) {
this.setTitle('Upcoming');
NzbDrone.mainRegion.show(new NzbDrone.Upcoming.UpcomingCollectionView(this, action, query));
},
calendar: function (action, query) {
this.setTitle('Calendar');
var calendarCollection = new NzbDrone.Calendar.CalendarCollection();
calendarCollection.fetch();
NzbDrone.mainRegion.show(new NzbDrone.Calendar.CalendarCollectionView(this, action, query, calendarCollection));
},
seriesDetails: function (query) {
var self = this;
this.setTitle('Loading Series');
var series = new NzbDrone.Series.SeriesModel({ id: query });
series.fetch({
success: function (seriesModel) {
self.setTitle(seriesModel.get('title'));
NzbDrone.mainRegion.show(new NzbDrone.Series.Details.SeriesDetailsView({ model: seriesModel }));
'Series/Index/SeriesIndexCollectionView', 'Upcoming/UpcomingCollectionView',
'Calendar/CalendarCollectionView', 'Shared/NotificationView',
'Shared/NotFoundView', 'MainMenuView', 'HeaderView',
'Series/Details/SeriesDetailsView', 'Series/EpisodeCollection',
'Settings/SettingsLayout', 'Missing/MissingCollectionView'],
function (app, modalRegion) {
var controller = Backbone.Marionette.Controller.extend({
addSeries: function (action, query) {
this.setTitle('Add Series');
NzbDrone.mainRegion.show(new NzbDrone.AddSeries.AddSeriesLayout(this, action, query));
},
series: function (action, query) {
this.setTitle('NzbDrone');
NzbDrone.mainRegion.show(new NzbDrone.Series.Index.SeriesIndexCollectionView());
},
upcoming: function (action, query) {
this.setTitle('Upcoming');
NzbDrone.mainRegion.show(new NzbDrone.Upcoming.UpcomingCollectionView(this, action, query));
},
calendar: function (action, query) {
this.setTitle('Calendar');
var calendarCollection = new NzbDrone.Calendar.CalendarCollection();
calendarCollection.fetch();
NzbDrone.mainRegion.show(new NzbDrone.Calendar.CalendarCollectionView(this, action, query, calendarCollection));
},
seriesDetails: function (query) {
var self = this;
this.setTitle('Loading Series');
var series = new NzbDrone.Series.SeriesModel({ id: query });
series.fetch({
success: function (seriesModel) {
self.setTitle(seriesModel.get('title'));
NzbDrone.mainRegion.show(new NzbDrone.Series.Details.SeriesDetailsView({ model: seriesModel }));
}
});
},
settings: function (action, query) {
this.setTitle('Settings');
var settingsModel = new NzbDrone.Settings.SettingsModel();
settingsModel.fetch({
success: function (settings) {
NzbDrone.mainRegion.show(new NzbDrone.Settings.SettingsLayout(this, action, query, settings));
}
});
},
missing: function (action, query) {
this.setTitle('Missing');
var missingCollection = new NzbDrone.Missing.MissingCollection();
missingCollection.fetch({
success: function (missing) {
NzbDrone.mainRegion.show(new NzbDrone.Missing.MissingCollectionView(this, action, query, missing));
}
})
},
notFound: function () {
this.setTitle('Not Found');
NzbDrone.mainRegion.show(new NzbDrone.Shared.NotFoundView(this));
},
setTitle: function (title) {
$('#title-region').html(title);
if (title.toLocaleLowerCase() === 'nzbdrone') {
window.document.title = 'NzbDrone';
}
});
},
settings: function(action, query) {
this.setTitle('Settings');
var settingsModel = new NzbDrone.Settings.SettingsModel();
settingsModel.fetch({
success: function(settings) {
NzbDrone.mainRegion.show(new NzbDrone.Settings.SettingsLayout(this, action, query, settings));
else {
window.document.title = title + ' - NzbDrone';
}
});
},
missing: function(action, query) {
this.setTitle('Missing');
var missingCollection = new NzbDrone.Missing.MissingCollection();
missingCollection.fetch({
success: function(missing) {
NzbDrone.mainRegion.show(new NzbDrone.Missing.MissingCollectionView(this, action, query, missing));
}
})
},
notFound: function () {
this.setTitle('Not Found');
NzbDrone.mainRegion.show(new NzbDrone.Shared.NotFoundView(this));
},
}
});
setTitle: function (title) {
$('#title-region').html(title);
//Modal dialog initializer
NzbDrone.addInitializer(function () {
if (title.toLocaleLowerCase() === 'nzbdrone') {
window.document.title = 'NzbDrone';
}
else {
window.document.title = title + ' - NzbDrone';
}
}
});
NzbDrone.addRegions({ modalRegion: modalRegion });
//Modal dialog initializer
NzbDrone.addInitializer(function () {
NzbDrone.vent.on(NzbDrone.Events.OpenModalDialog, function (options) {
console.log('opening modal dialog ' + options.view.template);
NzbDrone.modalRegion.show(options.view);
});
NzbDrone.addRegions({ modalRegion: modalRegion });
NzbDrone.vent.on(NzbDrone.Events.CloseModalDialog, function () {
console.log('closing modal dialog');
NzbDrone.modalRegion.close();
});
NzbDrone.vent.on(NzbDrone.Events.OpenModalDialog, function (options) {
console.log('opening modal dialog ' + options.view.template);
NzbDrone.modalRegion.show(options.view);
});
NzbDrone.vent.on(NzbDrone.Events.CloseModalDialog, function () {
console.log('closing modal dialog');
NzbDrone.modalRegion.close();
});
return new controller();
});
return new controller();
});

@ -2,91 +2,91 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>NzbDrone</title>
<link rel="SHORTCUT ICON" href="favicon.ico" />
<link rel="apple-touch-icon" sizes="57x57" href="Static/Content/Images/apple-touch-icon-114.png" />
<link rel="apple-touch-icon" sizes="114x114" href="Static/Content/Images/apple-touch-icon-114.png" />
<link rel="apple-touch-icon" sizes="72x72" href="Static/Content/Images/apple-touch-icon-144.png" />
<link rel="apple-touch-icon" sizes="144x144" href="Static/Content/Images/apple-touch-icon-144.png" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<link rel="SHORTCUT ICON" href="favicon.ico"/>
<link rel="apple-touch-icon" sizes="57x57" href="Static/Content/Images/apple-touch-icon-114.png"/>
<link rel="apple-touch-icon" sizes="114x114" href="Static/Content/Images/apple-touch-icon-114.png"/>
<link rel="apple-touch-icon" sizes="72x72" href="Static/Content/Images/apple-touch-icon-144.png"/>
<link rel="apple-touch-icon" sizes="144x144" href="Static/Content/Images/apple-touch-icon-144.png"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<link href='//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,400,600,300' rel='stylesheet' type='text/css'>
<link href="/content/bootstrap.css" rel='stylesheet' type='text/css' />
<link href="/content/bootstrap.slider.css" rel='stylesheet' type='text/css' />
<link href="/content/bootstrapSwitch.css" rel='stylesheet' type='text/css' />
<link href="/content/base.css" rel='stylesheet' type='text/css' />
<link href="/content/bootstrap.css" rel='stylesheet' type='text/css'/>
<link href="/content/bootstrap.slider.css" rel='stylesheet' type='text/css'/>
<link href="/content/bootstrapSwitch.css" rel='stylesheet' type='text/css'/>
<link href="/content/base.css" rel='stylesheet' type='text/css'/>
<link href="/content/theme.css" rel='stylesheet' type='text/css'>
<link href="/content/toastr.css" rel='stylesheet' type='text/css'>
<link href="/content/fullcalendar.css" rel='stylesheet' type='text/css'>
<link href="/content/tablesorter.bootstrap.css" rel='stylesheet' type='text/css' />
<link href="/content/tablesorter.pager.css" rel='stylesheet' type='text/css' />
<link href="/AddSeries/addseries.css" rel='stylesheet' type='text/css' />
<link href="/content/menu.css" rel='stylesheet' type='text/css' />
<link href="/content/form.css" rel='stylesheet' type='text/css' />
<link href="/content/settings.quality.css" rel='stylesheet' type='text/css' />
<link href="/content/tablesorter.bootstrap.css" rel='stylesheet' type='text/css'/>
<link href="/content/tablesorter.pager.css" rel='stylesheet' type='text/css'/>
<link href="/AddSeries/addseries.css" rel='stylesheet' type='text/css'/>
<link href="/content/menu.css" rel='stylesheet' type='text/css'/>
<link href="/content/form.css" rel='stylesheet' type='text/css'/>
<link href="/content/settings.quality.css" rel='stylesheet' type='text/css'/>
</head>
<body>
<div id="in-nav">
<div class="container">
<div class="row">
<div class=span2>
<a id="logo" href="/">
<h4>Nzb<strong>Drone</strong></h4>
</a>
</div>
<div id="in-nav">
<div class="container">
<div class="row">
<div class=span2>
<a id="logo" href="/">
<h4>Nzb<strong>Drone</strong></h4>
</a>
</div>
</div>
</div>
<div id="in-sub-nav">
<div class="container">
<div class="row">
<div class="span12">
<ul id="main-menu-region">
<li><a href="/"><i class="icon-film"></i>
<br>
Series</a></li>
<li><a href="/calendar"><i class="icon-calendar"></i>
<br>
Calendar</a></li>
<li><span class="label label-important pull-right">08</span><a href="history"><i class="icon-time"></i><br>
History</a></li>
<li><span class="label label-important pull-right">04</span><a href="missing"><i class="icon-folder-open"></i><br>
Missing</a></li>
<li><a href="settings"><i class="icon-cogs"></i>
<br>
Settings</a></li>
<li><a href="system"><i class="icon-plane"></i>
<br>
System</a></li>
<li><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=KRTE52U3XJDSQ" target="_blank"><i class="icon-star"></i>
<br>
Donate</a></li>
</ul>
</div>
</div>
<div id="in-sub-nav">
<div class="container">
<div class="row">
<div class="span12">
<ul id="main-menu-region">
<li><a href="/"><i class="icon-film"></i>
<br>
Series</a></li>
<li><a href="/calendar"><i class="icon-calendar"></i>
<br>
Calendar</a></li>
<li><span class="label label-important pull-right">08</span><a href="history"><i class="icon-time"></i><br>
History</a></li>
<li><span class="label label-important pull-right">04</span><a href="missing"><i class="icon-folder-open"></i><br>
Missing</a></li>
<li><a href="settings"><i class="icon-cogs"></i>
<br>
Settings</a></li>
<li><a href="system"><i class="icon-plane"></i>
<br>
System</a></li>
<li><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=KRTE52U3XJDSQ" target="_blank"><i class="icon-star"></i>
<br>
Donate</a></li>
</ul>
</div>
</div>
</div>
<div class="page">
<div class="page-container">
<div class="container">
<div class="row">
<div class="span12 header">
<h4 id="title-region">NZBDRONE</h4>
</div>
<div class="span12" id="notification-region" />
</div>
<div class="page">
<div class="page-container">
<div class="container">
<div class="row">
<div class="span12 header">
<h4 id="title-region">NZBDRONE</h4>
</div>
<div class="span12" id="main-region"></div>
<div id="modal-region"></div>
<div class="span12" id="notification-region"/>
</div>
<div class="span12" id="main-region"></div>
<div id="modal-region"></div>
</div>
</div>
<footer>
<div class="container">
<div class="row">
<div class="span12">
<p>&copy; Copyright 2013 NzbDrone</p>
</div>
</div>
<footer>
<div class="container">
<div class="row">
<div class="span12">
<p>&copy; Copyright 2013 NzbDrone</p>
</div>
</div>
</footer>
</div>
</footer>
</body>
<script src="/JsLibraries/jquery.js"></script>
<script src="/JsLibraries/bootstrap.js"></script>

@ -1,13 +1,13 @@
'use strict';
define([
'app',
'Missing/MissingCollection'
'app',
'Missing/MissingCollection'
], function () {
NzbDrone.Missing.MissingItemView = Backbone.Marionette.ItemView.extend({
template: 'Missing/MissingItemTemplate',
tagName: 'tr',
tagName : 'tr',
onRender: function () {
NzbDrone.ModelBinder.bind(this.model, this.el);

@ -1,10 +1,10 @@
define(['app'], function (app) {
NzbDrone.Missing.MissingModel = Backbone.Model.extend({
mutators: {
bestDateString: function () {
bestDateString : function () {
return bestDateString(this.get('airDate'));
},
paddedEpisodeNumber: function(){
paddedEpisodeNumber: function () {
return this.get('episodeNumber');
}
}

@ -2,13 +2,13 @@
$.fn.autoComplete = function (resource) {
$(this).typeahead({
source: function (filter, callback) {
source : function (filter, callback) {
$.ajax({
url: NzbDrone.Constants.ApiRoot + resource,
url : NzbDrone.Constants.ApiRoot + resource,
dataType: "json",
type: "GET",
data: { query: filter },
success: function (data) {
type : "GET",
data : { query: filter },
success : function (data) {
callback(data);
}
});

@ -1,28 +1,25 @@
//try to add ajax data as query string to DELETE calls.
(function (){
(function () {
var original = Backbone.ajax;
Backbone.ajax = function (){
Backbone.ajax = function () {
var xhr = arguments[0];
//check if ajax call was made with data option
if(xhr && xhr.data && xhr.type=='DELETE')
{
if(xhr.url.indexOf('?') === -1)
{
if (xhr && xhr.data && xhr.type == 'DELETE') {
if (xhr.url.indexOf('?') === -1) {
xhr.url = xhr.url + '?' + $.param(xhr.data);
}
else
{
else {
xhr.url = xhr.url + '&' + $.param(xhr.data);
}
}
if (original){
original.apply (this, arguments);
if (original) {
original.apply(this, arguments);
}
};
} ());
}());

@ -12,7 +12,7 @@ Marionette.TemplateCache.get = function (templateId) {
return function (data) {
try {
console.log('rendering template ' + templateName);
//console.log('rendering template ' + templateName);
return templateFunction(data);
}
catch (error) {

@ -1,12 +1,22 @@
function bestDateString(sourceDate){
if (!sourceDate) return '';
function bestDateString(sourceDate) {
if (!sourceDate) {
return '';
}
var date = Date.create(sourceDate);
if (date.isYesterday()) return 'Yesterday';
if (date.isToday()) return 'Today';
if (date.isTomorrow()) return 'Tomorrow';
if (date.isAfter(Date.create('tomorrow')) && date.isBefore(Date.create().addDays(7))) return date.format('{Weekday}');
if (date.isYesterday()) {
return 'Yesterday';
}
if (date.isToday()) {
return 'Today';
}
if (date.isTomorrow()) {
return 'Tomorrow';
}
if (date.isAfter(Date.create('tomorrow')) && date.isBefore(Date.create().addDays(7))) {
return date.format('{Weekday}');
}
return date.format('{MM}/{dd}/{yyyy}');
}

@ -1,7 +1,7 @@
$.tablesorter.addParser({
// set a unique id
id: 'title',
is: function (s) {
id : 'title',
is : function (s) {
// return false so this parser is not auto detected
return false;
},
@ -10,33 +10,34 @@ $.tablesorter.addParser({
return s.match(/title="(.*?)"/)[1].toLowerCase();
},
// set type, either numeric or text
type: 'text'
type : 'text'
});
$.tablesorter.addParser({
// set a unique id
id: 'date',
is: function (s) {
id : 'date',
is : function (s) {
// return false so this parser is not auto detected
return false;
},
format: function (s) {
// format your data for normalization
var match = s.match(/data-date="(.*?)"/)[1];
if (match === '')
if (match === '') {
return Date.create().addYears(100).format(Date.ISO8601_DATETIME);
}
return match;
},
// set type, either numeric or text
type: 'text'
type : 'text'
});
$.tablesorter.addParser({
// set a unique id
id: 'innerHtml',
is: function (s) {
id : 'innerHtml',
is : function (s) {
// return false so this parser is not auto detected
return false;
},
@ -45,5 +46,5 @@ $.tablesorter.addParser({
return $(s).get(0).innerHTML;
},
// set type, either numeric or text
type: 'text'
type : 'text'
});

@ -1,6 +1,6 @@
define(['app', 'Quality/QualitySizeModel'], function () {
NzbDrone.Quality.QualitySizeCollection = Backbone.Collection.extend({
model: NzbDrone.Quality.QualitySizeModel,
url: NzbDrone.Constants.ApiRoot + '/qualitysizes'
url : NzbDrone.Constants.ApiRoot + '/qualitysizes'
});
});

@ -6,10 +6,10 @@
},
mutators: {
thirtyMinuteSize: function() {
thirtyMinuteSize: function () {
return this.get('maxSize') * 30;
},
sixtyMinuteSize: function(){
sixtyMinuteSize : function () {
return this.get('maxSize') * 60;
}
}

@ -1,8 +1,8 @@
define(['app', 'Quality/QualityProfileModel'], function () {
var qualityProfileCollection = Backbone.Collection.extend({
model:NzbDrone.Quality.QualityProfileModel,
url:NzbDrone.Constants.ApiRoot + '/qualityprofiles'
model: NzbDrone.Quality.QualityProfileModel,
url : NzbDrone.Constants.ApiRoot + '/qualityprofiles'
});
var profiles = new qualityProfileCollection();

@ -2,18 +2,18 @@
NzbDrone.Quality.QualityProfileModel = Backbone.Model.extend({
mutators: {
allowed: function() {
allowed: function () {
return _.where(this.get('qualities'), { allowed: true });
},
cutoffName: function() {
cutoffName: function () {
return _.findWhere(this.get('qualities'), { id: this.get('cutoff') }).name;
}
},
defaults: {
id: null,
name: '',
id : null,
name : '',
//'qualities.allowed': false,
cutoff: null
}

@ -4,6 +4,7 @@
</div>
<div class="modal-body">
<p>Are you sure you want to delete '{{title}}'?</p>
<div class="series-delete-files">
<label class="checkbox">
<input class="x-delete-files" type="checkbox" value="true">

@ -3,29 +3,29 @@
define(['app', 'Series/SeriesModel'], function () {
NzbDrone.Series.Delete.DeleteSeriesView = Backbone.Marionette.ItemView.extend({
template:'Series/Delete/DeleteSeriesTemplate',
tagName:'div',
className:"modal",
template : 'Series/Delete/DeleteSeriesTemplate',
tagName : 'div',
className: "modal",
events:{
'click .x-confirm-delete':'removeSeries'
events: {
'click .x-confirm-delete': 'removeSeries'
},
ui:{
deleteFiles:'.x-delete-files'
ui: {
deleteFiles: '.x-delete-files'
},
onRender:function () {
onRender: function () {
NzbDrone.ModelBinder.bind(this.model, this.el);
},
removeSeries:function () {
removeSeries: function () {
var deleteFiles = this.ui.deleteFiles.prop('checked');
this.model.destroy({
data:{ 'deleteFiles':deleteFiles },
success:function (model) {
data : { 'deleteFiles': deleteFiles },
success: function (model) {
model.collection.remove(model);
}
});

@ -3,13 +3,13 @@ define(['app', 'Series/SeasonModel'], function () {
NzbDrone.Series.Details.EpisodeItemView = Backbone.Marionette.ItemView.extend({
template: 'Series/Details/EpisodeItemTemplate',
tagName: 'tr',
tagName : 'tr',
ui: {
},
events: {
events : {
},
onRender: function () {

@ -1,15 +1,15 @@
'use strict';
define(['app', 'Series/Details/EpisodeItemView'], function () {
NzbDrone.Series.Details.SeasonCompositeView = Backbone.Marionette.CompositeView.extend({
itemView: NzbDrone.Series.Details.EpisodeItemView,
itemView : NzbDrone.Series.Details.EpisodeItemView,
itemViewContainer: '.x-episodes',
template: 'Series/Details/SeasonCompositeTemplate',
template : 'Series/Details/SeasonCompositeTemplate',
initialize: function() {
this.collection =new NzbDrone.Series.EpisodeCollection();
initialize: function () {
this.collection = new NzbDrone.Series.EpisodeCollection();
this.collection.fetch({data: {
seriesId: this.model.get('seriesId'),
seasonNumber:this.model.get('seasonNumber')
seriesId : this.model.get('seriesId'),
seasonNumber: this.model.get('seasonNumber')
}});
}
});

@ -1,9 +1,9 @@
define(['app', 'Quality/QualityProfileCollection', 'Series/Details/SeasonCompositeView', 'Series/SeasonCollection'], function () {
NzbDrone.Series.Details.SeriesDetailsView = Backbone.Marionette.CompositeView.extend({
itemView: NzbDrone.Series.Details.SeasonCompositeView,
itemView : NzbDrone.Series.Details.SeasonCompositeView,
itemViewContainer: '.x-series-seasons',
template: 'Series/Details/SeriesDetailsTemplate',
template : 'Series/Details/SeriesDetailsTemplate',
initialize: function () {
this.collection = new NzbDrone.Series.SeasonCollection();

@ -4,24 +4,26 @@
</div>
<div class="modal-body">
<div class="form-horizontal">
<div class="control-group">
<label class="control-label">Monitored</label>
<div class="controls">
<div class="switch">
<input type="checkbox" name="monitored" />
<input type="checkbox" name="monitored"/>
</div>
<span class="help-inline-checkbox">
<i class="icon-question-sign" title="Should NzbDrone download episodes for this series?"></i>
</span>
</div>
</div>
<div class="control-group">
<label class="control-label">Use Season Folder</label>
<div class="controls">
<div class="switch">
<input type="checkbox" name="seasonFolder" />
<input type="checkbox" name="seasonFolder"/>
</div>
<span class="help-inline-checkbox">
<i class="icon-question-sign" title="Should downloaded episodes be stored in season folders?"></i>
@ -31,11 +33,12 @@
<div class="control-group">
<label class="control-label" for="inputQualityProfile">Quality Profile</label>
<div class="controls">
<select class="x-quality-profile" id="inputQualityProfile" name="qualityProfileId">
{{#each qualityProfiles.models}}
<option value="{{id}}">{{attributes.name}}</option>
<option value="{{id}}">{{attributes.name}}</option>
{{/each}}
</select>
<span class="help-inline">
@ -46,6 +49,7 @@
<div class="control-group">
<label class="control-label" for="inputPath">Path</label>
<div class="controls">
<input type="text" id="inputPath" placeholder="Path" name="path">
<span class="help-inline">
@ -53,9 +57,10 @@
</span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="inputBacklogSetting">Backlog Setting</label>
<div class="controls">
<select id="inputBacklogSetting" class="inputClass x-backlog-setting" name="backlogSetting">
<option value="0">Inherit</option>
@ -67,11 +72,12 @@
</span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="inputCustomStartDate">Custom Start Date</label>
<div class="controls">
<input type="date" id="inputCustomStartDate" name="customStartDate">
<input type="date" id="inputCustomStartDate" name="customStartDate">
<span class="help-inline">
<i class="icon-question-sign" title="Should NzbDrone only download episodes after your preferred start date?"></i>
</span>
@ -80,7 +86,7 @@
</div>
</div>
<div class="modal-footer">
<button class="btn btn-danger pull-left x-remove" >delete</button>
<button class="btn btn-danger pull-left x-remove">delete</button>
<button class="btn" data-dismiss="modal">cancel</button>
<button class="btn btn-primary x-save">save</button>
</div>

@ -2,19 +2,19 @@
define(['app', 'Series/SeriesModel', 'Series/Delete/DeleteSeriesView', 'Quality/QualityProfileCollection'], function () {
NzbDrone.Series.Edit.EditSeriesView = Backbone.Marionette.ItemView.extend({
template: 'Series/Edit/EditSeriesTemplate',
tagName: 'div',
template : 'Series/Edit/EditSeriesTemplate',
tagName : 'div',
className: "modal",
ui: {
progressbar: '.progress .bar',
qualityProfile: '.x-quality-profile',
progressbar : '.progress .bar',
qualityProfile : '.x-quality-profile',
backlogSettings: '.x-backlog-setting',
switch: '.switch'
switch : '.switch'
},
events: {
'click .x-save': 'saveSeries',
'click .x-save' : 'saveSeries',
'click .x-remove': 'removeSeries'
},

@ -1,6 +1,6 @@
define(['app', 'Series/EpisodeModel'], function () {
NzbDrone.Series.EpisodeCollection = Backbone.Collection.extend({
url: NzbDrone.Constants.ApiRoot + '/episodes',
url : NzbDrone.Constants.ApiRoot + '/episodes',
model: NzbDrone.Series.EpisodeModel
});
});

@ -2,9 +2,9 @@
define(['app', 'Quality/QualityProfileCollection', 'Series/Index/SeriesItemView'], function (app, qualityProfileCollection) {
NzbDrone.Series.Index.SeriesIndexCollectionView = Backbone.Marionette.CompositeView.extend({
itemView: NzbDrone.Series.Index.SeriesItemView,
itemViewContainer: 'tbody',
template: 'Series/Index/SeriesIndexTemplate',
itemView : NzbDrone.Series.Index.SeriesItemView,
itemViewContainer : 'tbody',
template : 'Series/Index/SeriesIndexTemplate',
qualityProfileCollection: qualityProfileCollection,
//emptyView: NzbDrone.Series.EmptySeriesCollectionView,
@ -18,27 +18,26 @@ define(['app', 'Quality/QualityProfileCollection', 'Series/Index/SeriesItemView'
this.itemViewOptions = { qualityProfiles: this.qualityProfileCollection };
},
ui:{
table : '.x-series-table'
ui: {
table: '.x-series-table'
},
onItemRemoved: function()
{
onItemRemoved: function () {
this.ui.table.trigger('update');
},
onCompositeCollectionRendered: function()
{
onCompositeCollectionRendered: function () {
this.ui.table.trigger('update');
if(!this.tableSorter && this.collection.length > 0)
{
if (!this.tableSorter && this.collection.length > 0) {
this.tableSorter = this.ui.table.tablesorter({
textExtraction: function (node) {
return node.innerHTML;
},
sortList: [[1,0]],
headers: {
sortList : [
[1, 0]
],
headers : {
0: {
sorter: 'title'
},
@ -59,30 +58,32 @@ define(['app', 'Quality/QualityProfileCollection', 'Series/Index/SeriesItemView'
this.applySortIcons();
this.ui.table.bind("sortEnd", function() {
this.ui.table.bind("sortEnd", function () {
this.applySortIcons();
});
}
else
{
else {
this.ui.table.trigger('update');
}
},
//Todo: Remove this from each view that requires it
applySortIcons: function() {
$(this.ui.table).find('th.tablesorter-header .tablesorter-header-inner i').each(function(){
applySortIcons : function () {
$(this.ui.table).find('th.tablesorter-header .tablesorter-header-inner i').each(function () {
$(this).remove();
});
$(this.ui.table).find('th.tablesorter-header').each(function () {
if ($(this).hasClass('tablesorter-headerDesc'))
if ($(this).hasClass('tablesorter-headerDesc')) {
$(this).children('.tablesorter-header-inner').append('<i class="icon-sort-up pull-right">');
}
else if ($(this).hasClass('tablesorter-headerAsc'))
else if ($(this).hasClass('tablesorter-headerAsc')) {
$(this).children('.tablesorter-header-inner').append('<i class="icon-sort-down pull-right">');
}
else if (!$(this).hasClass('sorter-false'))
else if (!$(this).hasClass('sorter-false')) {
$(this).children('.tablesorter-header-inner').append('<i class="icon-sort pull-right">');
}
});
}
});
@ -90,5 +91,5 @@ define(['app', 'Quality/QualityProfileCollection', 'Series/Index/SeriesItemView'
NzbDrone.Series.Index.EmptySeriesCollectionView = Backbone.Marionette.CompositeView.extend({
template: 'Series/Index/EmptySeriesCollectionTemplate',
tagName: 'tr'
tagName : 'tr'
});

@ -8,8 +8,9 @@
<td>
<div class="progress">
<span class="progressbar-back-text">{{episodeFileCount}} / {{episodeCount}}</span>
<div class="bar" style="width:{{percentOfEpisodes}}%"><span class="progressbar-front-text">{{episodeFileCount}} / {{episodeCount}}</span></div>
</div>
</div>
</td>
<td>
<i class="icon-cog x-edit" title="Edit Series"></i>

@ -1,24 +1,24 @@
'use strict';
define([
'app',
'Quality/QualityProfileCollection',
'Series/SeriesCollection',
'Series/Edit/EditSeriesView',
'Series/Delete/DeleteSeriesView'
'app',
'Quality/QualityProfileCollection',
'Series/SeriesCollection',
'Series/Edit/EditSeriesView',
'Series/Delete/DeleteSeriesView'
], function () {
NzbDrone.Series.Index.SeriesItemView = Backbone.Marionette.ItemView.extend({
template: 'Series/Index/SeriesItemTemplate',
tagName: 'tr',
tagName : 'tr',
ui: {
'progressbar': '.progress .bar'
},
events: {
'click .x-edit': 'editSeries',
'click .x-edit' : 'editSeries',
'click .x-remove': 'removeSeries'
},

@ -1,6 +1,6 @@
define(['app','Series/SeasonModel'], function () {
define(['app', 'Series/SeasonModel'], function () {
NzbDrone.Series.SeasonCollection = Backbone.Collection.extend({
url: NzbDrone.Constants.ApiRoot + '/season',
url : NzbDrone.Constants.ApiRoot + '/season',
model: NzbDrone.Series.SeasonModel
});
});

@ -1,6 +1,6 @@
define(['app', 'Series/SeriesModel'], function () {
NzbDrone.Series.SeriesCollection = Backbone.Collection.extend({
url: NzbDrone.Constants.ApiRoot + '/series',
url : NzbDrone.Constants.ApiRoot + '/series',
model: NzbDrone.Series.SeriesModel
});
});

@ -14,8 +14,9 @@
var percent = 100;
if (episodeCount > 0)
if (episodeCount > 0) {
percent = episodeFileCount / episodeCount * 100;
}
return percent;
}
@ -23,8 +24,8 @@
defaults: {
episodeFileCount: 0,
episodeCount: 0,
qualityProfiles: qualityProfileCollection
episodeCount : 0,
qualityProfiles : qualityProfileCollection
}
});

@ -3,6 +3,7 @@
<div class="control-group">
<label class="control-label">Download Client</label>
<div class="controls">
<select class="inputClass x-backlog-setting" name="downloadClient">
<option value="0">SABnzbd</option>
@ -17,8 +18,9 @@
</div>
<div class="control-group">
<label class="control-label">Unsorted TV Directory</label>
<div class="controls">
<input type="text" placeholder="C:\Unsorted TV" name="downloadClientDropDirectory" class="x-path" />
<input type="text" placeholder="C:\Unsorted TV" name="downloadClientDropDirectory" class="x-path"/>
<span class="help-inline">
<i class="icon-question-sign" title="The directory where your download client downloads TV shows to."></i>
</span>
@ -27,9 +29,10 @@
<div class="control-group">
<label class="control-label">Use Scene Name</label>
<div class="controls">
<div class="switch">
<input type="checkbox" name="useSceneName" />
<input type="checkbox" name="useSceneName"/>
</div>
<span class="help-inline-checkbox">
<i class="icon-question-sign" title="Use Scene name when adding NZB to queue?"></i>
@ -43,18 +46,21 @@
<div class="control-group">
<label class="control-label">Auto-Configure</label>
<div class="controls">
<input type="button" value="Auto-Configure" class="btn btn-inverse" />
<input type="button" value="Auto-Configure" class="btn btn-inverse"/>
<span class="help-inline">
<i class="icon-question-sign" title="(Windows only) If access to SABnzbd doesn't require a username & password and it is on the same system as NzbDrone, you can auto-configure it"></i>
<i class="icon-question-sign"
title="(Windows only) If access to SABnzbd doesn't require a username & password and it is on the same system as NzbDrone, you can auto-configure it"></i>
</span>
</div>
</div>
<div class="control-group">
<label class="control-label">Host</label>
<div class="controls">
<input type="text" name="sabHost" />
<input type="text" name="sabHost"/>
<span class="help-inline">
<i class="icon-question-sign" title="Hostname or IP Address running SABnzbd"></i>
</span>
@ -63,8 +69,9 @@
<div class="control-group">
<label class="control-label">Port</label>
<div class="controls">
<input type="text" name="sabPort" />
<input type="text" name="sabPort"/>
<span class="help-inline">
<i class="icon-question-sign" title="Port for the SABnzbd Web Interface"></i>
</span>
@ -73,8 +80,9 @@
<div class="control-group">
<label class="control-label">API Key</label>
<div class="controls">
<input type="text" name="sabApiKey" />
<input type="text" name="sabApiKey"/>
<span class="help-inline">
<i class="icon-question-sign" title="API Key for SABnzbd<br/>Found in Config -> General"></i>
</span>
@ -83,8 +91,9 @@
<div class="control-group">
<label class="control-label">Username</label>
<div class="controls">
<input type="text" name="sabUsername" />
<input type="text" name="sabUsername"/>
<span class="help-inline">
<i class="icon-question-sign" title="Username for the SABnzbd web interface"></i>
</span>
@ -93,8 +102,9 @@
<div class="control-group">
<label class="control-label">Password</label>
<div class="controls">
<input type="password" name="sabPassword" />
<input type="password" name="sabPassword"/>
<span class="help-inline">
<i class="icon-question-sign" title="Password for the SABnzbd web interface"></i>
</span>
@ -103,6 +113,7 @@
<div class="control-group">
<label class="control-label">TV Category</label>
<div class="controls">
<input type="text" name="sabTvCategory" placeholder="This is not the dropdownlist you're looking for"/>
<span class="help-inline">
@ -113,6 +124,7 @@
<div class="control-group">
<label class="control-label">Backlog Priority</label>
<div class="controls">
<select name="sabBacklogTvPriority">
<option>Default</option>
@ -130,6 +142,7 @@
<div class="control-group">
<label class="control-label">Recent Priority</label>
<div class="controls">
<select name="sabRecentTvPriority">
<option>Default</option>
@ -147,8 +160,9 @@
<div class="control-group">
<label class="control-label">Test</label>
<div class="controls">
<input type="button" value="Test" class="btn btn-inverse" />
<input type="button" value="Test" class="btn btn-inverse"/>
<span class="help-inline">
<i class="icon-question-sign" title="Test SABnzbd settings"></i>
</span>
@ -160,8 +174,9 @@
<legend>Blackhole</legend>
<div class="control-group">
<label class="control-label">Blackhole Directory</label>
<div class="controls">
<input type="text" name="blackholeDirectory" class="x-path" />
<input type="text" name="blackholeDirectory" class="x-path"/>
<span class="help-inline">
<i class="icon-question-sign" title="The directory where your download client will pickup .nzb files"></i>
</span>
@ -173,8 +188,9 @@
<legend>Pneumatic</legend>
<div class="control-group">
<label class="control-label">Nzb Directory</label>
<div class="controls">
<input type="text" name="pneumaticDirectory" class="x-path" />
<input type="text" name="pneumaticDirectory" class="x-path"/>
<span class="help-inline">
<i class="icon-question-sign" title="Directory to save NZBs for Pneumatic<br/>must be accessible from XBMC"></i>
</span>
@ -186,8 +202,9 @@
<legend>NZBGet</legend>
<div class="control-group">
<label class="control-label">Host</label>
<div class="controls">
<input type="text" name="nzbgetHost" />
<input type="text" name="nzbgetHost"/>
<span class="help-inline">
<i class="icon-question-sign" title="Hostname or IP Address running NZBGet"></i>
</span>
@ -196,8 +213,9 @@
<div class="control-group">
<label class="control-label">Port</label>
<div class="controls">
<input type="text" name="nzbgetPort" />
<input type="text" name="nzbgetPort"/>
<span class="help-inline">
<i class="icon-question-sign" title="Port for the NZBGet Web Interface"></i>
</span>
@ -206,8 +224,9 @@
<div class="control-group">
<label class="control-label">API Key</label>
<div class="controls">
<input type="text" name="nzbgetApiKey" />
<input type="text" name="nzbgetApiKey"/>
<span class="help-inline">
<i class="icon-question-sign" title="API Key for NZBGet<br/>Found in Config -> General"></i>
</span>
@ -216,8 +235,9 @@
<div class="control-group">
<label class="control-label">Username</label>
<div class="controls">
<input type="text" name="nzbgetUsername" />
<input type="text" name="nzbgetUsername"/>
<span class="help-inline">
<i class="icon-question-sign" title="Username for the NZBGet web interface"></i>
</span>
@ -226,8 +246,9 @@
<div class="control-group">
<label class="control-label">Password</label>
<div class="controls">
<input type="password" name="nzbgetPassword" />
<input type="password" name="nzbgetPassword"/>
<span class="help-inline">
<i class="icon-question-sign" title="Password for the NZBGet web interface"></i>
</span>
@ -236,8 +257,9 @@
<div class="control-group">
<label class="control-label">TV Category</label>
<div class="controls">
<input type="text" name="nzbgetTvCategory" />
<input type="text" name="nzbgetTvCategory"/>
<span class="help-inline">
<i class="icon-question-sign" title="Category to use when sending NZBs to NZBGet"></i>
</span>
@ -246,6 +268,7 @@
<div class="control-group">
<label class="control-label">Backlog Priority</label>
<div class="controls">
<select name="nzbgetBacklogTvPriority">
<option>Default</option>
@ -263,6 +286,7 @@
<div class="control-group">
<label class="control-label">Recent Priority</label>
<div class="controls">
<select name="nzbgetRecentTvPriority">
<option>Default</option>
@ -280,8 +304,9 @@
<div class="control-group">
<label class="control-label">Test</label>
<div class="controls">
<input type="button" value="Test" class="btn btn-inverse" />
<input type="button" value="Test" class="btn btn-inverse"/>
<span class="help-inline">
<i class="icon-question-sign" title="Test NZBGet settings"></i>
</span>

@ -1,17 +1,17 @@
'use strict';
define([
'app', 'Settings/SettingsModel'
'app', 'Settings/SettingsModel'
], function () {
NzbDrone.Settings.DownloadClient.DownloadClientView = Backbone.Marionette.ItemView.extend({
template: 'Settings/DownloadClient/DownloadClientTemplate',
template : 'Settings/DownloadClient/DownloadClientTemplate',
className: 'form-horizontal',
ui: {
switch: '.switch',
tooltip: '[class^="help-inline"] i',
switch : '.switch',
tooltip : '[class^="help-inline"] i',
pathInput: '.x-path'
},

@ -1,7 +1,7 @@
'use strict';
define([
'app', 'Settings/SettingsModel'
'app', 'Settings/SettingsModel'
], function () {

@ -3,9 +3,10 @@
<div class="control-group">
<label class="control-label">Backlog Searching</label>
<div class="controls">
<div class="switch">
<input type="checkbox" name="enableBacklogSearching" />
<input type="checkbox" name="enableBacklogSearching"/>
</div>
<span class="help-inline-checkbox">
<i class="icon-question-sign" title="Should NzbDrone try to download missing episodes automatically?"></i>
@ -17,9 +18,10 @@
<div class="control-group">
<label class="control-label">Ignore Deleted Episodes</label>
<div class="controls">
<div class="switch">
<input type="checkbox" name="autoIgnorePreviouslyDownloadedEpisodes" />
<input type="checkbox" name="autoIgnorePreviouslyDownloadedEpisodes"/>
</div>
<span class="help-inline-checkbox">
<i class="icon-question-sign" title="Episodes deleted from disk are automatically ignored in NzbDrone"></i>
@ -29,6 +31,7 @@
<div class="control-group">
<label class="control-label">Nzb Restrictions</label>
<div class="controls">
<textarea rows="3" name="nzbRestrictions" class="nzb-restrictions"></textarea>
<span class="help-inline">

@ -1,16 +1,16 @@
'use strict';
define([
'app', 'Settings/SettingsModel'
'app', 'Settings/SettingsModel'
], function () {
NzbDrone.Settings.Misc.MiscView = Backbone.Marionette.ItemView.extend({
template: 'Settings/Misc/MiscTemplate',
template : 'Settings/Misc/MiscTemplate',
className: 'form-horizontal',
ui: {
switch: '.switch',
switch : '.switch',
tooltip: '[class^="help-inline"] i'
},

@ -3,9 +3,10 @@
<div class="control-group">
<label class="control-label">Use Scene Name</label>
<div class="controls">
<div class="switch">
<input type="checkbox" name="sortingUseSceneName" />
<input type="checkbox" name="sortingUseSceneName"/>
</div>
<span class="help-inline-checkbox">
<i class="icon-question-sign" title="Use the scene name, ignoring all other naming settings"></i>
@ -15,9 +16,10 @@
<div class="control-group">
<label class="control-label">Series Name</label>
<div class="controls">
<div class="switch">
<input type="checkbox" name="sortingIncludeSeriesName" />
<input type="checkbox" name="sortingIncludeSeriesName"/>
</div>
<span class="help-inline-checkbox">
<i class="icon-question-sign" title="Should filenames contain the series name when renamed?"></i>
@ -27,9 +29,10 @@
<div class="control-group">
<label class="control-label">Episode Name</label>
<div class="controls">
<div class="switch">
<input type="checkbox" name="sortingIncludeEpisodeTitle" />
<input type="checkbox" name="sortingIncludeEpisodeTitle"/>
</div>
<span class="help-inline-checkbox">
<i class="icon-question-sign" title="Should filenames contain the episode name when renamed?"></i>
@ -39,9 +42,10 @@
<div class="control-group">
<label class="control-label">Replace Spaces</label>
<div class="controls">
<div class="switch">
<input type="checkbox" name="sortingReplaceSpaces" />
<input type="checkbox" name="sortingReplaceSpaces"/>
</div>
<span class="help-inline-checkbox">
<i class="icon-question-sign" title="Do you want to replace spaces in the filename with periods?"></i>
@ -50,23 +54,25 @@
</div>
<div class="control-group">
<label class="control-label">Append Quality</label>
<div class="controls">
<div class="switch">
<input type="checkbox" name="sortingAppendQuality" />
</div>
<label class="control-label">Append Quality</label>
<div class="controls">
<div class="switch">
<input type="checkbox" name="sortingAppendQuality"/>
</div>
<span class="help-inline-checkbox">
<i class="icon-question-sign" title="Should filenames have the quality appended to the end?"></i>
</span>
</div>
</div>
</div>
<div class="control-group">
<label class="control-label">Use Scene Folders</label>
<div class="controls">
<div class="switch">
<input type="checkbox" name="useSeasonFolder" />
<input type="checkbox" name="useSeasonFolder"/>
</div>
<span class="help-inline-checkbox">
<i class="icon-question-sign" title="Should files be stored in season folders by default? (Applied only when a series is added)"></i>
@ -77,8 +83,9 @@
<div class="control-group">
<label class="control-label">Season Folder Format</label>
<div class="controls">
<input type="text" placeholder="Season %s" name="sortingSeasonFolderFormat" />
<input type="text" placeholder="Season %s" name="sortingSeasonFolderFormat"/>
<span class="help-inline">
<i class="icon-question-sign" title="How should season folders be named? (Use %0s to pad to two digits)"></i>
</span>
@ -87,6 +94,7 @@
<div class="control-group">
<label class="control-label">Separator Style</label>
<div class="controls">
<select class="inputClass x-backlog-setting" name="sortingSeparatorStyle">
<option value="0">Dash</option>
@ -101,6 +109,7 @@
<div class="control-group">
<label class="control-label">Numbering Style</label>
<div class="controls">
<select class="inputClass x-backlog-setting" name="sortingNumberStyle">
<option value="0">1x05</option>
@ -116,6 +125,7 @@
<div class="control-group">
<label class="control-label">Multi-Episode Style</label>
<div class="controls">
<select class="inputClass x-backlog-setting" name="sortingMultiEpisodeStyle">
<option value="0">Extend</option>
@ -135,9 +145,10 @@
<div class="control-group">
<label class="control-label">XBMC</label>
<div class="controls">
<div class="switch">
<input type="checkbox" name="metadataXbmcEnabled" />
<input type="checkbox" name="metadataXbmcEnabled"/>
</div>
<span class="help-inline-checkbox">
<i class="icon-question-sign" title="Enable creating metadata for XBMC"></i>
@ -147,9 +158,10 @@
<div class="control-group">
<label class="control-label">Use Banners</label>
<div class="controls">
<div class="switch">
<input type="checkbox" name="metadataUseBanners" />
<input type="checkbox" name="metadataUseBanners"/>
</div>
<span class="help-inline-checkbox">
<i class="icon-question-sign" title="Use banners instead of posters?"></i>

@ -1,20 +1,20 @@
'use strict';
define([
'app', 'Settings/SettingsModel'
'app', 'Settings/SettingsModel'
], function () {
NzbDrone.Settings.Naming.NamingView = Backbone.Marionette.ItemView.extend({
template: 'Settings/Naming/NamingTemplate',
template : 'Settings/Naming/NamingTemplate',
className: 'form-horizontal',
ui: {
switch: '.switch',
switch : '.switch',
tooltip: '[class^="help-inline"] i'
},
initialize: function(){
initialize: function () {
//Listen to save event
},

@ -1,7 +1,7 @@
'use strict';
define([
'app', 'Settings/SettingsModel'
'app', 'Settings/SettingsModel'
], function () {

@ -7,6 +7,7 @@
<div class="control-group">
<label class="control-label">Name</label>
<div class="controls">
<input type="text" name="name">
<span class="help-inline">
@ -17,11 +18,12 @@
<div class="control-group">
<label class="control-label">Cutoff</label>
<div class="controls">
<select class="x-cutoff" name="cutoff">
{{#each allowed}}
<option value="{{id}}">{{name}}</option>
<option value="{{id}}">{{name}}</option>
{{/each}}
</select>
<span class="help-inline">
@ -35,20 +37,20 @@
{{#each qualities}}
<div class="control-group">
<label class="control-label">{{name}}</label>
<div class="controls">
<div class="switch" data-on-label="Yes" data-off-label="No">
<input type="checkbox" name="allowed" />
<input type="checkbox" name="allowed"/>
</div>
</div>
</div>
{{/each}}
</div>
</div>
<div class="modal-footer">
<button class="btn btn-danger pull-left x-remove" >delete</button>
<button class="btn btn-danger pull-left x-remove">delete</button>
<button class="btn" data-dismiss="modal">cancel</button>
<button class="btn btn-primary x-save">save</button>
</div>

@ -2,8 +2,8 @@
define(['app', 'Quality/QualityProfileModel'], function () {
NzbDrone.Settings.Quality.Profile.EditQualityProfileView = Backbone.Marionette.ItemView.extend({
template: 'Settings/Quality/Profile/EditQualityProfileTemplate',
tagName: 'div',
template : 'Settings/Quality/Profile/EditQualityProfileTemplate',
tagName : 'div',
className: "modal",
ui: {
@ -29,10 +29,10 @@ define(['app', 'Quality/QualityProfileModel'], function () {
this.$el.parent().modal('hide');
},
// removeSeries: function () {
// var view = new NzbDrone.Series.Delete.DeleteSeriesView({ model: this.model });
// NzbDrone.modalRegion.show(view);
// }
// removeSeries: function () {
// var view = new NzbDrone.Series.Delete.DeleteSeriesView({ model: this.model });
// NzbDrone.modalRegion.show(view);
// }
});
});

@ -2,12 +2,12 @@
<legend>Quality Profiles</legend>
<table class="table table-hover">
<thead>
<tr>
<th>Name</th>
<th>Allowed</th>
<th>Cutoff</th>
<th>Controls</th>
</tr>
<tr>
<th>Name</th>
<th>Allowed</th>
<th>Cutoff</th>
<th>Controls</th>
</tr>
</thead>
<tbody></tbody>
</table>

@ -2,19 +2,18 @@
define(['app', 'Settings/Quality/Profile/QualityProfileView'], function (app) {
NzbDrone.Settings.Quality.Profile.QualityProfileCollectionView = Backbone.Marionette.CompositeView.extend({
itemView: NzbDrone.Settings.Quality.Profile.QualityProfileView,
itemView : NzbDrone.Settings.Quality.Profile.QualityProfileView,
itemViewContainer: 'tbody',
template: 'Settings/Quality/Profile/QualityProfileCollectionTemplate',
template : 'Settings/Quality/Profile/QualityProfileCollectionTemplate',
initialize: function (options) {
},
ui:{
ui: {
},
onCompositeCollectionRendered: function()
{
onCompositeCollectionRendered: function () {
}
});

@ -1,7 +1,7 @@
<td name="name"></td>
<td>
{{#each allowed}}
{{name}} |
{{name}} |
{{/each}}
</td>
<td name="cutoffName"></td>

@ -1,22 +1,22 @@
'use strict';
define([
'app',
'Quality/QualityProfileCollection',
'Settings/Quality/Profile/EditQualityProfileView'
'app',
'Quality/QualityProfileCollection',
'Settings/Quality/Profile/EditQualityProfileView'
], function () {
NzbDrone.Settings.Quality.Profile.QualityProfileView = Backbone.Marionette.ItemView.extend({
template: 'Settings/Quality/Profile/QualityProfileTemplate',
tagName: 'tr',
tagName : 'tr',
ui: {
'progressbar': '.progress .bar'
},
events: {
'click .x-edit': 'editSeries',
'click .x-edit' : 'editSeries',
'click .x-remove': 'removeSeries'
},

@ -12,8 +12,8 @@
regions: {
qualityStandard: '#quality-standard',
qualityProfile: '#quality-profile',
qualitySize: '#quality-size'
qualityProfile : '#quality-profile',
qualitySize : '#quality-size'
},
ui: {

@ -1,14 +1,14 @@

<div class="control-group">
<label class="control-label">Default Quality Profile</label>
<div class="controls">
<select class="x-quality-profile" name="qualityProfileId">
{{#each qualityProfiles.models}}
<div class="control-group">
<label class="control-label">Default Quality Profile</label>
<div class="controls">
<select class="x-quality-profile" name="qualityProfileId">
{{#each qualityProfiles.models}}
<option value="{{id}}">{{attributes.name}}</option>
{{/each}}
</select>
{{/each}}
</select>
<span class="help-inline">
<i class="icon-question-sign" title="The default quality to use when adding series to NzbDrone "></i>
</span>
</div>
</div>
</div>

@ -1,15 +1,15 @@
'use strict';
define([
'app', 'Settings/SettingsModel'
'app', 'Settings/SettingsModel'
], function () {
NzbDrone.Settings.Quality.QualityView = Backbone.Marionette.ItemView.extend({
template: 'Settings/Quality/QualityTemplate',
template : 'Settings/Quality/QualityTemplate',
className: 'form-horizontal',
initialize: function(options) {
initialize: function (options) {
this.qualityProfileCollection = options.qualityProfiles;
this.model.set({ qualityProfiles: this.qualityProfileCollection });
},

@ -2,20 +2,19 @@
define(['app', 'Settings/Quality/Size/QualitySizeView'], function (app) {
NzbDrone.Settings.Quality.Size.QualitySizeCollectionView = Backbone.Marionette.CompositeView.extend({
itemView: NzbDrone.Settings.Quality.Size.QualitySizeView,
itemView : NzbDrone.Settings.Quality.Size.QualitySizeView,
itemViewContainer: '#quality-sizes-container',
template: 'Settings/Quality/Size/QualitySizeCollectionTemplate',
template : 'Settings/Quality/Size/QualitySizeCollectionTemplate',
initialize: function () {
var test = 1;
},
ui:{
ui: {
},
onCompositeCollectionRendered: function()
{
onCompositeCollectionRendered: function () {
}
});

@ -1,5 +1,5 @@
<b>{{name}}</b>
<div class="quality-slider-container">
<input type="text" class="span4 slider" />
<input type="text" class="span4 slider"/>
</div>
30 minute size: <span name="thirtyMinuteSize" class="thirty-minute-size"></span>MB | 60 minute size: <span name="sixtyMinuteSize" class="sixty-minute-size"></span>MB

@ -1,19 +1,19 @@
'use strict';
define([
'app',
'Quality/QualitySizeCollection'
'app',
'Quality/QualitySizeCollection'
], function () {
NzbDrone.Settings.Quality.Size.QualitySizeView = Backbone.Marionette.ItemView.extend({
template: 'Settings/Quality/Size/QualitySizeTemplate',
template : 'Settings/Quality/Size/QualitySizeTemplate',
className: 'quality-size-item',
ui: {
slider: '.slider',
slider : '.slider',
thirtyMinuteSize: '.thirty-minute-size',
sixtyMinuteSize: '.sixty-minute-size'
sixtyMinuteSize : '.sixty-minute-size'
},
events: {
@ -29,10 +29,10 @@ define([
var self = this;
this.ui.slider.slider({
min: 0,
max: 200,
step: 1,
value: self.model.get('maxSize'),
min : 0,
max : 200,
step : 1,
value : self.model.get('maxSize'),
tooltip: 'hide'
});
},

@ -13,34 +13,34 @@
template: 'Settings/SettingsLayoutTemplate',
regions: {
naming: '#naming',
quality: '#quality',
indexers: '#indexers',
naming : '#naming',
quality : '#quality',
indexers : '#indexers',
downloadClient: '#download-client',
notifications: '#notifications',
system: '#system',
misc: '#misc'
notifications : '#notifications',
system : '#system',
misc : '#misc'
},
ui: {
namingTab: '.x-naming-tab',
qualityTab: '.x-quality-tab',
indexersTab: '.x-indexers-tab',
namingTab : '.x-naming-tab',
qualityTab : '.x-quality-tab',
indexersTab : '.x-indexers-tab',
downloadClientTab: '.x-download-client-tab',
notificationsTab: '.x-notifications-tab',
systemTab: '.x-system-tab',
miscTab: '.x-misc-tab'
notificationsTab : '.x-notifications-tab',
systemTab : '.x-system-tab',
miscTab : '.x-misc-tab'
},
events: {
'click .x-naming-tab': 'showNaming',
'click .x-quality-tab': 'showQuality',
'click .x-indexers-tab': 'showIndexers',
'click .x-naming-tab' : 'showNaming',
'click .x-quality-tab' : 'showQuality',
'click .x-indexers-tab' : 'showIndexers',
'click .x-download-client-tab': 'showDownloadClient',
'click .x-notifications-tab': 'showNotifications',
'click .x-system-tab': 'showSystem',
'click .x-misc-tab': 'showMisc',
'click .x-save-settings': 'save'
'click .x-notifications-tab' : 'showNotifications',
'click .x-system-tab' : 'showSystem',
'click .x-misc-tab' : 'showMisc',
'click .x-save-settings' : 'save'
},
showNaming: function (e) {

@ -1,11 +1,11 @@
<ul class="nav nav-tabs" id="myTab">
<li><a href="#naming" class="x-naming-tab">Naming</a></li>
<li><a href="#quality" class="x-quality-tab">Quality</a></li>
<li><a href="#indexers" class ="x-indexers-tab">Indexers</a></li>
<li><a href="#download-client" class ="x-download-client-tab">Download Client</a></li>
<li><a href="#notifications" class ="x-notifications-tab">Notifications</a></li>
<li><a href="#system" class ="x-system-tab">System</a></li>
<li><a href="#misc" class ="x-misc-tab">Misc</a></li>
<li><a href="#indexers" class="x-indexers-tab">Indexers</a></li>
<li><a href="#download-client" class="x-download-client-tab">Download Client</a></li>
<li><a href="#notifications" class="x-notifications-tab">Notifications</a></li>
<li><a href="#system" class="x-system-tab">System</a></li>
<li><a href="#misc" class="x-misc-tab">Misc</a></li>
</ul>
<div class="tab-content">

@ -1,7 +1,7 @@
'use strict';
define([
'app', 'Settings/SettingsModel'
'app', 'Settings/SettingsModel'
], function () {

@ -1,3 +1,3 @@
<div>
<img src="/static/content/images/404.png" style="height:400px; margin-top: 50px" />
<img src="/static/content/images/404.png" style="height:400px; margin-top: 50px"/>
</div>

@ -1,5 +1,5 @@
"use strict";
define(['app'],function () {
define(['app'], function () {
NzbDrone.Shared.NotFoundView = Backbone.Marionette.ItemView.extend({
template: 'Shared/notfoundtemplate'
});

@ -3,15 +3,15 @@
var collection = Backbone.Collection.extend({
model: NzbDrone.Shared.NotificationModel,
initialize: function () {
/* var model = new NzbDrone.Shared.NotificationModel();
model.set('title','test notification');
model.set('message','test message');
model.set('level', 'error');
this.push(model);
*/
/* var model = new NzbDrone.Shared.NotificationModel();
model.set('title','test notification');
model.set('message','test message');
model.set('level', 'error');
this.push(model);
*/
var self = this;

@ -1,17 +1,17 @@
define(['app'], function () {
NzbDrone.Shared.NotificationModel = Backbone.Model.extend({
mutators:{
mutators: {
preFormattedMessage:function () {
preFormattedMessage: function () {
return this.get('message').replace(/\\r\\n/g, '<br>');
},
isPreFormatted:function () {
isPreFormatted: function () {
return this.get('message').indexOf('\\r\\n') !== -1;
},
iconClass:function () {
iconClass: function () {
if (this.has('icon')) {
return 'icon';
@ -29,10 +29,10 @@
}
},
defaults:{
"level":'info',
"title":'',
"message":''
defaults: {
"level" : 'info',
"title" : '',
"message": ''
}
});
});

@ -1,10 +1,10 @@
<div class="alert alert-{{level}}">
<button type="button" class="close x-close icon-remove-sign"></button>
<i class="{{iconClass}}" /><strong>{{title}}</strong>
<i class="{{iconClass}}"/><strong>{{title}}</strong>
{{#if isPreFormatted}}
<pre>{{{preFormattedMessage}}}</pre>
<pre>{{{preFormattedMessage}}}</pre>
{{else}}
{{message}}
{{message}}
{{/if}}
</div>
</div>

@ -16,8 +16,8 @@ define(['app', 'Shared/NotificationCollection'], function (app, notificationColl
$.Deferred(function () {
self.$el.slideUp('slow');
}).done(function () {
self.model.destroy();
});
self.model.destroy();
});
}
});
@ -34,7 +34,7 @@ define(['app', 'Shared/NotificationCollection'], function (app, notificationColl
console.log('initializing notification view');
NzbDrone.notificationRegion.show(new collectionView());
});
});

@ -1,6 +1,6 @@
define(['app'],function () {
define(['app'], function () {
NzbDrone.Shared.SpinnerView = Backbone.Marionette.ItemView.extend({
template: 'Shared/SpinnerTemplate',
template : 'Shared/SpinnerTemplate',
className: 'nz-spinner row'
});
});

@ -1,6 +1,6 @@
define(['app', 'Upcoming/UpcomingModel'], function () {
NzbDrone.Upcoming.UpcomingCollection = Backbone.Collection.extend({
url: NzbDrone.Constants.ApiRoot + '/upcoming',
url : NzbDrone.Constants.ApiRoot + '/upcoming',
model: NzbDrone.Upcoming.UpcomingModel
});
});

@ -1,24 +1,24 @@
<table class="table table-striped">
<thead>
<tr>
<th>Series Title</th>
<th>Episode</th>
<th>Episode Title</th>
<th>Air Time</th>
<th>Status</th>
</tr>
<tr>
<th>Series Title</th>
<th>Episode</th>
<th>Episode Title</th>
<th>Air Time</th>
<th>Status</th>
</tr>
</thead>
<tbody id="yesterday">
<tr>
<td colspan="5">Yesterday</td>
</tr>
<tr>
<td colspan="5">Yesterday</td>
</tr>
</tbody>
<tbody id="today">
<tr>
<td colspan="5">Today</td>
</tr>
<tr>
<td colspan="5">Today</td>
</tr>
</tbody>
<tbody id="tomorrow">

@ -2,20 +2,20 @@
define(['app', 'Upcoming/UpcomingItemView'], function (app) {
NzbDrone.Upcoming.UpcomingCollectionView = Backbone.Marionette.CompositeView.extend({
itemView: NzbDrone.Upcoming.UpcomingItemView,
template: 'Upcoming/UpcomingCollectionTemplate',
itemView : NzbDrone.Upcoming.UpcomingItemView,
template : 'Upcoming/UpcomingCollectionTemplate',
itemViewContainer: 'table',
ui: {
yesterday: 'tbody#yesterday',
today: 'tbody#today',
tomorrow: 'tbody#tomorrow',
two_days: 'tbody#two_days',
yesterday : 'tbody#yesterday',
today : 'tbody#today',
tomorrow : 'tbody#tomorrow',
two_days : 'tbody#two_days',
three_days: 'tbody#three_days',
four_days: 'tbody#four_days',
five_days: 'tbody#five_days',
six_days: 'tbody#six_days',
later: 'tbody#later'
four_days : 'tbody#four_days',
five_days : 'tbody#five_days',
six_days : 'tbody#six_days',
later : 'tbody#later'
},
initialize: function () {
@ -23,7 +23,7 @@ define(['app', 'Upcoming/UpcomingItemView'], function (app) {
this.collection.fetch();
},
serializeData: function() {
serializeData: function () {
var viewData = {};
viewData.two_days = Date.create().addDays(2).format('{Weekday}');
viewData.three_days = Date.create().addDays(3).format('{Weekday}');
@ -33,45 +33,45 @@ define(['app', 'Upcoming/UpcomingItemView'], function (app) {
return viewData;
},
appendHtml: function(collectionView, itemView, index){
appendHtml: function (collectionView, itemView, index) {
var date = Date.create(itemView.model.get('airTime'));
if (date.isYesterday()){
if (date.isYesterday()) {
collectionView.$(this.ui.yesterday).append(itemView.el);
return;
}
if (date.isToday()){
if (date.isToday()) {
collectionView.$(this.ui.today).append(itemView.el);
return;
}
if (date.isTomorrow()){
if (date.isTomorrow()) {
collectionView.$(this.ui.tomorrow).append(itemView.el);
return;
}
if (date.is(Date.create().addDays(2).short())){
if (date.is(Date.create().addDays(2).short())) {
collectionView.$(this.ui.two_days).append(itemView.el);
return;
}
if (date.is(Date.create().addDays(3).short())){
if (date.is(Date.create().addDays(3).short())) {
collectionView.$(this.ui.three_days).append(itemView.el);
return;
}
if (date.is(Date.create().addDays(4).short())){
if (date.is(Date.create().addDays(4).short())) {
collectionView.$(this.ui.four_days).append(itemView.el);
return;
}
if (date.is(Date.create().addDays(5).short())){
if (date.is(Date.create().addDays(5).short())) {
collectionView.$(this.ui.five_days).append(itemView.el);
return;
}
if (date.is(Date.create().addDays(6).short())){
if (date.is(Date.create().addDays(6).short())) {
collectionView.$(this.ui.six_days).append(itemView.el);
return;
}
@ -81,8 +81,7 @@ define(['app', 'Upcoming/UpcomingItemView'], function (app) {
//if (date.isBefore(Date.create().addDays(7))) return date.format('{Weekday}');
},
onCompositeCollectionRendered: function()
{
onCompositeCollectionRendered: function () {
//Might not need this :D
}
});

@ -1,13 +1,13 @@
'use strict';
define([
'app',
'Upcoming/UpcomingCollection'
'app',
'Upcoming/UpcomingCollection'
], function () {
NzbDrone.Upcoming.UpcomingItemView = Backbone.Marionette.ItemView.extend({
template: 'Upcoming/UpcomingItemTemplate',
tagName: 'tr',
tagName : 'tr',
onRender: function () {
NzbDrone.ModelBinder.bind(this.model, this.el);

Loading…
Cancel
Save