1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

add sharing function

This commit is contained in:
Luke Pulverenti 2015-07-02 01:08:05 -04:00
parent 93ad16971d
commit 54afe9d0c2
22 changed files with 17346 additions and 17048 deletions

View file

@ -118,7 +118,7 @@
var page = this;
var tabContent = page.querySelector('.homeFavoritesTabContent');
$(page.querySelector('neon-animated-pages')).on('iron-select', function () {
$(page.querySelector('neon-animated-pages')).on('tabchange', function () {
if (parseInt(this.selected) == 2) {
if (LibraryBrowser.needsRefresh(tabContent)) {

View file

@ -83,7 +83,7 @@
var page = this;
var tabContent = page.querySelector('.homeNextUpTabContent');
$(page.querySelector('neon-animated-pages')).on('iron-select', function () {
$(page.querySelector('neon-animated-pages')).on('tabchange', function () {
if (parseInt(this.selected) == 1) {
if (LibraryBrowser.needsRefresh(tabContent)) {

View file

@ -64,7 +64,7 @@
var page = this;
var tabContent = page.querySelector('.homeUpcomingTabContent');
$(page.querySelector('neon-animated-pages')).on('iron-select', function () {
$(page.querySelector('neon-animated-pages')).on('tabchange', function () {
if (parseInt(this.selected) == 3) {
if (LibraryBrowser.needsRefresh(tabContent)) {

View file

@ -210,10 +210,6 @@
var page = this;
Events.on(page.querySelector('.btnTakeTour'), 'click', function () {
takeTour(page, Dashboard.getCurrentUserId());
});
var tabs = page.querySelector('paper-tabs');
LibraryBrowser.configurePaperLibraryTabs(page, page.querySelectorAll('paper-tabs')[0], page.querySelectorAll('neon-animated-pages')[0]);
@ -232,22 +228,25 @@
}
});
$(page.querySelector('neon-animated-pages')).on('iron-select', function () {
$(page.querySelector('neon-animated-pages')).on('tabchange', function () {
loadTab(page, parseInt(this.selected));
});
}).on('pagebeforeshowready', "#indexPage", function () {
$(page.querySelector('neon-animated-pages')).on('iron-select', function () {
var page = this;
// When transition animations are used, add a content loading delay to allow the animations to finish
// Otherwise with both operations happening at the same time, it can cause the animation to not run at full speed.
var delay = LibraryBrowser.enableFullPaperTabs() ? 500 : 0;
var pages = this;
setTimeout(function () {
$(pages).trigger('tabchange');
}, delay);
});
var tabs = page.querySelector('paper-tabs');
var selected = tabs.selected;
Events.on(page.querySelector('.btnTakeTour'), 'click', function () {
takeTour(page, Dashboard.getCurrentUserId());
});
if (selected == null) {
selected = parseInt(getParameterByName('tab') || '0');
tabs.selected = selected;
page.querySelector('neon-animated-pages').selected = selected;
}
});
function getDisplayPreferencesAppName() {

View file

@ -52,7 +52,7 @@
$('.btnSync', page).addClass('hide');
}
if (user.Policy.EnablePublicSharing) {
if (LibraryBrowser.canShare(item, user)) {
$('.btnShare', page).removeClass('hide');
} else {
$('.btnShare', page).addClass('hide');

View file

@ -90,12 +90,16 @@
}
var now = new Date().getTime();
var cacheDuration = 300000;
if (!AppInfo.isNativeApp && ($.browser.ipad || $.browser.iphone || $.browser.android)) {
var cacheDuration;
if (AppInfo.isNativeApp) {
cacheDuration = 300000;
}
else if ($.browser.ipad || $.browser.iphone || $.browser.android) {
cacheDuration = 10000;
}
else if (!$.browser.mobile) {
else {
cacheDuration = 60000;
}
@ -167,13 +171,33 @@
tabs.hideScrollButtons = true;
if (AppInfo.enableBottomTabs) {
tabs.alignBottom = true;
tabs.classList.add('bottomTabs');
}
if (LibraryBrowser.enableFullPaperTabs()) {
$(tabs).show();
LibraryBrowser.configureSwipeTabs(ownerpage, tabs, pages);
if ($.browser.safari) {
$('.libraryViewNav', ownerpage).addClass('paperLibraryViewNav');
// Not very iOS-like I suppose
tabs.noSlide = true;
tabs.noink = true;
tabs.noBar = true;
}
else {
// Safari doesn't handle the horizontal swiping very well
// Not very iOS-like I suppose
pages.entryAnimation = 'slide-from-right-animation';
pages.exitAnimation = 'slide-left-animation';
LibraryBrowser.configureSwipeTabs(ownerpage, tabs, pages);
}
$('.libraryViewNav', ownerpage).addClass('paperLibraryViewNav').removeClass('libraryViewNavWithMinHeight');
} else {
@ -190,7 +214,32 @@
var selected = this.selected;
$('a', legacyTabs).removeClass('ui-btn-active')[selected].classList.add('ui-btn-active');
});
$('.libraryViewNav', ownerpage).removeClass('libraryViewNavWithMinHeight');
}
$(ownerpage).on('pagebeforeshowready', LibraryBrowser.onTabbedPageBeforeShowReady);
},
onTabbedPageBeforeShowReady: function () {
var page = this;
var tabs = page.querySelector('paper-tabs');
var selected = tabs.selected;
if (selected == null) {
selected = parseInt(getParameterByName('tab') || '0');
tabs.selected = selected;
page.querySelector('neon-animated-pages').selected = selected;
} else if (!LibraryBrowser.enableFullPaperTabs()) {
Events.trigger(page.querySelector('neon-animated-pages'), 'tabchange');
}
},
canShare: function (item, user) {
return user.Policy.EnablePublicSharing;
},
getDateParamValue: function (date) {

View file

@ -323,6 +323,14 @@
});
}
if (user.Policy.EnablePublicSharing) {
items.push({
name: Globalize.translate('ButtonShare'),
id: 'share',
ironIcon: 'share'
});
}
if (commands.indexOf('sync') != -1) {
items.push({
name: Globalize.translate('ButtonSync'),
@ -445,6 +453,11 @@
case 'externalplayer':
LibraryBrowser.playInExternalPlayer(itemId);
break;
case 'share':
require(['sharingmanager'], function () {
SharingManager.showMenu(Dashboard.getCurrentUserId(), itemId);
});
break;
case 'removefromplaylist':
$(card).parents('.itemsContainer').trigger('removefromplaylist', [playlistItemId]);
break;

View file

@ -664,34 +664,6 @@
return false;
}
function getBackdropUrl(item) {
var screenWidth = screen.availWidth;
if (item.BackdropImageTags && item.BackdropImageTags.length) {
return ApiClient.getScaledImageUrl(item.Id, {
type: "Backdrop",
index: 0,
maxWidth: screenWidth,
tag: item.BackdropImageTags[0]
});
}
else if (item.ParentBackdropItemId && item.ParentBackdropImageTags && item.ParentBackdropImageTags.length) {
return ApiClient.getScaledImageUrl(item.ParentBackdropItemId, {
type: 'Backdrop',
index: 0,
maxWidth: screenWidth,
tag: item.ParentBackdropImageTags[0]
});
}
return null;
};
function updateCastIcon() {
var info = MediaController.getPlayerInfo();
@ -728,7 +700,10 @@
$('.requiresJqmCreate', this).trigger('create');
LibraryBrowser.configureSwipeTabs(page, page.querySelectorAll('paper-tabs')[0], page.querySelectorAll('neon-animated-pages')[0]);
var tabs = page.querySelectorAll('paper-tabs')[0];
tabs.alignBottom = true;
LibraryBrowser.configureSwipeTabs(page, tabs, page.querySelectorAll('neon-animated-pages')[0]);
$(MediaController).on('playerchange', function () {
updateCastIcon(page);

View file

@ -14,7 +14,14 @@
html += '<h2>' + Globalize.translate('HeaderShare') + '</h2>';
html += '<div>';
html += '<div class="ssk-group ssk-round ssk-lg"><a href="" class="ssk ssk-facebook"></a><a href="" class="ssk ssk-twitter"></a><a href="" class="ssk ssk-google-plus"></a><a href="" class="ssk ssk-pinterest"></a><a href="" class="ssk ssk-tumblr"></a></div>';
html += '<div class="ssk-group ssk-round ssk-lg">';
// We can only do facebook if we can guarantee that the current page is available over the internet, since FB will try to probe it.
if (Dashboard.isConnectMode()) {
html += '<a href="" class="ssk ssk-facebook"></a>';
}
html += '<a href="" class="ssk ssk-twitter"></a><a href="" class="ssk ssk-google-plus"></a><a href="" class="ssk ssk-pinterest"></a><a href="" class="ssk ssk-tumblr"></a></div>';
html += '</div>';
html += '<div style="max-width:240px;">';

View file

@ -595,7 +595,7 @@ var Dashboard = {
callback(index == 1);
}, title || Globalize.translate('HeaderAlert'), buttonLabels.join(','));
}, title || Globalize.translate('HeaderConfirm'), buttonLabels.join(','));
} else {
Dashboard.confirmInternal(message, title, true, callback);
@ -1974,7 +1974,6 @@ var AppInfo = {};
define("connectservice", ["apiclient/connectservice"]);
define("paperbuttonstyle", [], function () {
Dashboard.importCss('thirdparty/paper-button-style.css');
return {};
});
define("jqmicons", [], function () {
@ -2001,7 +2000,12 @@ var AppInfo = {};
}
define("sharingmanager", ["scripts/sharingmanager"]);
define("sharingwidget", ["scripts/sharingwidget"]);
if (Dashboard.isRunningInCordova()) {
define("sharingwidget", ["cordova/sharingwidget"]);
} else {
define("sharingwidget", ["scripts/sharingwidget"]);
}
//requirejs(['http://viblast.com/player/free-version/qy2fdwajo1/viblast.js']);
@ -2181,7 +2185,7 @@ $(document).on('pagecreate', ".page", function () {
}
}
if (!isConnectMode && this.id !== "loginPage" && !page.classList.contains('forgotPasswordPage') && !page.classList.contains('wizardPage')) {
if (!isConnectMode && this.id !== "loginPage" && !page.classList.contains('forgotPasswordPage') && !page.classList.contains('wizardPage') && this.id !== 'publicSharedItemPage') {
Logger.log('Not logged into server. Redirecting to login.');
Dashboard.logout();