diff --git a/application/modules/default/controllers/HomeController.php b/application/modules/default/controllers/HomeController.php
index 8a6c1715a..de02d3773 100644
--- a/application/modules/default/controllers/HomeController.php
+++ b/application/modules/default/controllers/HomeController.php
@@ -1,477 +1,471 @@
.
**/
class HomeController extends Local_Controller_Action_DomainSwitch
{
public function indexAction()
{
- //get gitlab projetcs
- $git = new Default_Model_Ocs_Gitlab();
- $this->view->git_projects = $git->getProjects();
- $gitconfig = Zend_Registry::get('config')->settings->server->opencode;
- $this->view->git_homepage = $gitconfig->host;
-
/** @var Default_Model_ConfigStore $storeConfig */
$storeConfig = Zend_Registry::isRegistered('store_config') ? Zend_Registry::get('store_config') : null;
if ($storeConfig) {
$this->view->package_type = $storeConfig->package_type;
if($storeConfig->isShowHomepage())
{
$this->_helper->viewRenderer('index-' . $storeConfig->config_id_name);
return;
}
}
$params = array('ord' => 'latest');
if ($this->hasParam('domain_store_id')) {
$params['domain_store_id'] = $this->getParam('domain_store_id');
}
$this->forward('index', 'explore', 'default', $params);
}
public function indexAction_()
{
$storeConfig = Zend_Registry::isRegistered('store_config') ? Zend_Registry::get('store_config') : null;
$storePackageTypeIds = null;
if ($storeConfig) {
$this->view->package_type = $filter['package_type'] = $storeConfig['package_type'];
}
Zend_Registry::get('logger')->debug('*** SHOW_HOME_PAGE: ' . getenv('SHOW_HOME_PAGE'));
/**
* The SHOW_HOME_PAGE environment var will be set in apache .htaccess for some specific host names
* e.g.
* SetEnvIfNoCase Host opendesktop\.org$ SHOW_HOME_PAGE
*/
if (false == $this->hasParam('domain_store_id') AND getenv('SHOW_HOME_PAGE')) {
$this->_helper->viewRenderer('index-' . $this->getNameForStoreClient());
return;
}
// forward is the faster way, but you have no influence to the url. On redirect the url changes.
$params = array('ord' => 'latest');
if ($this->hasParam('domain_store_id')) {
$params['domain_store_id'] = $this->getParam('domain_store_id');
}
$this->forward('index', 'explore', 'default', $params);
}
public function showfeatureajaxAction()
{
$this->_helper->layout->disableLayout();
$modelInfo = new Default_Model_Info();
$page = (int)$this->getParam('page');
if($page==0){
$featureProducts = $modelInfo->getRandProduct();
$featureProducts->setItemCountPerPage(1);
$featureProducts->setCurrentPageNumber(1);
}else{
$featureProducts = $modelInfo->getFeaturedProductsForHostStores(100);
if($featureProducts->getTotalItemCount() > 0){
$offset = (int)$this->getParam('page');
$irandom = rand(1,$featureProducts->getTotalItemCount());
$featureProducts->setItemCountPerPage(1);
$featureProducts->setCurrentPageNumber($irandom);
}
}
if ($featureProducts->getTotalItemCount() > 0) {
$this->view->featureProducts = $featureProducts;
$this->_helper->viewRenderer('/partials/featuredProducts');
// $this->_helper->json($featureProducts);
}
}
public function metamenujsAction()
{
$this->_helper->layout()->disableLayout();
header('Access-Control-Allow-Origin: *');
$this->getResponse()
->setHeader('Access-Control-Allow-Origin', '*')
->setHeader('Access-Control-Allow-Credentials', 'true')
->setHeader('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
->setHeader('Access-Control-Allow-Headers', 'origin, content-type, accept')
;
}
public function metamenubundlejsAction()
{
$this->_helper->layout()->disableLayout();
// header('Access-Control-Allow-Origin: *');
// $this->getResponse()
// ->setHeader('Access-Control-Allow-Origin', '*')
// ->setHeader('Access-Control-Allow-Credentials', 'true')
// ->setHeader('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
// ->setHeader('Access-Control-Allow-Headers', 'origin, content-type, accept')
// ;
}
public function baseurlajaxAction()
{
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
header('Access-Control-Allow-Origin: *');
$this->getResponse()
->setHeader('Access-Control-Allow-Origin', '*')
->setHeader('Access-Control-Allow-Credentials', 'true')
->setHeader('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
->setHeader('Access-Control-Allow-Headers', 'origin, content-type, accept')
;
$resultArray = array();
$baseurl = Zend_Registry::get('config')->settings->client->default->baseurl;
$resultArray['base_url'] = $baseurl;
$resultAll = array();
$resultAll['status'] = "success";
$resultAll['data'] = $resultArray;
$this->_helper->json($resultAll);
}
public function forumurlajaxAction()
{
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
header('Access-Control-Allow-Origin: *');
$this->getResponse()
->setHeader('Access-Control-Allow-Origin', '*')
->setHeader('Access-Control-Allow-Credentials', 'true')
->setHeader('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
->setHeader('Access-Control-Allow-Headers', 'origin, content-type, accept')
;
$resultArray = array();
$url_forum = Zend_Registry::get('config')->settings->client->default->url_forum;
$resultArray['url_forum'] = $url_forum;
$resultAll = array();
$resultAll['status'] = "success";
$resultAll['data'] = $resultArray;
$this->_helper->json($resultAll);
}
public function blogurlajaxAction()
{
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
header('Access-Control-Allow-Origin: *');
$this->getResponse()
->setHeader('Access-Control-Allow-Origin', '*')
->setHeader('Access-Control-Allow-Credentials', 'true')
->setHeader('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
->setHeader('Access-Control-Allow-Headers', 'origin, content-type, accept')
;
$resultArray = array();
$url_blog = Zend_Registry::get('config')->settings->client->default->url_blog;
$resultArray['url_blog'] = $url_blog;
$resultAll = array();
$resultAll['status'] = "success";
$resultAll['data'] = $resultArray;
$this->_helper->json($resultAll);
}
public function storenameajaxAction()
{
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
header('Access-Control-Allow-Origin: *');
$this->getResponse()
->setHeader('Access-Control-Allow-Origin', '*')
->setHeader('Access-Control-Allow-Credentials', 'true')
->setHeader('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
->setHeader('Access-Control-Allow-Headers', 'origin, content-type, accept')
;
$resultArray = array();
$sname = Zend_Registry::get('store_host');
$resultArray['store_name'] = $sname;
$resultAll = array();
$resultAll['status'] = "success";
$resultAll['data'] = $resultArray;
$this->_helper->json($resultAll);
}
public function loginurlajaxAction()
{
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
header('Access-Control-Allow-Origin: *');
$this->getResponse()
->setHeader('Access-Control-Allow-Origin', '*')
->setHeader('Access-Control-Allow-Credentials', 'true')
->setHeader('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
->setHeader('Access-Control-Allow-Headers', 'origin, content-type, accept')
;
$resultArray = array();
$url = $this->getParam('url');
$filterRedirect = new Local_Filter_Url_Encrypt();
$loginUrl = '/login?redirect=' . $filterRedirect->filter($url);
$resultArray['login_url'] = $loginUrl;
$resultAll = array();
$resultAll['status'] = "success";
$resultAll['data'] = $resultArray;
$this->_helper->json($resultAll);
}
public function domainsajaxAction()
{
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
header('Access-Control-Allow-Origin: *');
$this->getResponse()
->setHeader('Access-Control-Allow-Origin', '*')
->setHeader('Access-Control-Allow-Credentials', 'true')
->setHeader('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
->setHeader('Access-Control-Allow-Headers', 'origin, content-type, accept')
;
$resultArray = array();
$domainobjects = $this->fetchMetaheaderMenuJson();
$resultArray['domains'] = $domainobjects;
$resultAll = array();
$resultAll['status'] = "success";
$resultAll['data'] = $resultArray;
$this->_helper->json($resultAll);
}
protected function setLayout()
{
$storeConfig = Zend_Registry::isRegistered('store_config') ? Zend_Registry::get('store_config') : null;
if($storeConfig && $storeConfig->layout_home)
{
$this->_helper->layout()->setLayout($storeConfig->layout_home);
}else{
$this->_helper->layout()->setLayout('home_template');
}
}
private function fetchMetaheaderMenuJson()
{
$sname = Zend_Registry::get('store_host');
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__ . md5($sname);
if (false == ($domainobjects = $cache->load($cacheName))) {
$tbl = new Default_Model_DbTable_ConfigStore();
$result = $tbl->fetchDomainObjects();
// sort Desktop manuelly to the front
$arrayDesktop = array();
$arrayRest = array();
foreach ($result as $obj) {
$o = $obj['order'];
$curOrder = floor($obj['order']/1000);
if($curOrder<10 or $curOrder>50) continue;
$obj['calcOrder'] = $curOrder;
$tmp = array();
$tmp['order'] = $obj['order'];
$tmp['calcOrder'] = $obj['calcOrder'];
$tmp['host'] = $obj['host'];
$tmp['name'] = $obj['name'];
if($curOrder==30) {
// Desktop set calcOrder = 9 manuelly put desktop in front
$tmp['calcOrder'] = 9;
$arrayDesktop[] = $tmp;
}else{
$arrayRest[] = $tmp;
}
}
$domainobjects = array_merge($arrayDesktop, $arrayRest);
$baseurl = Zend_Registry::get('config')->settings->client->default->baseurl;
// set group name manully
foreach ($domainobjects as &$obj) {
if($sname == $obj['host']){
$obj['menuactive'] = 1;
}else{
$obj['menuactive'] = 0;
}
$order = $obj['order'];
// z.b 150001 ende ==1 go real link otherwise /s/$name
$last_char_check = substr($order, -1);
if($last_char_check=='1')
{
$obj['menuhref'] = $obj['host'];
}else{
$obj['menuhref'] = $baseurl.'/s/'.$obj['name'];
}
switch ($obj['calcOrder']) {
case 9:
$obj['menugroup']='Desktops';
break;
case 10:
$obj['menugroup']='Applications';
break;
case 20:
$obj['menugroup']='Addons';
break;
case 40:
$obj['menugroup']='Artwork';
break;
case 50:
$obj['menugroup']='Other';
break;
}
}
$cache->save($domainobjects, $cacheName, array(), 28800);
}
return Zend_Json::encode($domainobjects);
}
/**
* @throws Exception
* @throws Zend_Exception
* @throws Zend_Form_Exception
*/
public function redirectmeAction()
{
$this->_helper->layout()->disableLayout();
//$this->_helper->viewRenderer->setNoRender(true);
$redir = "/";
if(isset($_GET['redirect'])) {
$redir = $_GET['redirect'];
$filter = new Local_Filter_Url_Decrypt();
$redir = $filter->filter($redir);
}
$this->view->redirect = $redir;
}
public function fetchforgitAction()
{
$this->_helper->layout()->disableLayout();
$tableProject = new Default_Model_Project();
$params = $this->getAllParams();
$action = 'fetch-products-for-git-project-id';
if($this->hasParam('target')) {
$action = $params['target'];
}
if($action == 'fetch-products-for-git-project-id') {
$gitProjectId = $params['project_id'];
$this->view->products = null;
if(isset($gitProjectId)) {
$products = $tableProject->fetchAll('status = 100 AND type_id = 1 AND is_gitlab_project = 1 AND gitlab_project_id = ' . $gitProjectId);
$helperImage = new Default_View_Helper_Image();
$viewArray = array();
$viewProjectArray = array();
foreach ($products as $product) {
$viewProjectArray = array();
$viewProjectArray['project_id'] = $product['project_id'];
$viewProjectArray['title'] = $product['title'];
$viewProjectArray['version'] = $product['version'];
$viewProjectArray['member_id'] = $product['member_id'];
$viewProjectArray['avatar'] = $helperImage->Image($product['image_small'], array('width' => 100, 'height' => 100));
$viewArray[] = $viewProjectArray;
}
$this->view->viewdata = $viewArray;
}
} else {
$this->view->viewdata = array();
}
}
}
diff --git a/application/modules/default/views/scripts/home/partials/common_rightsidebar.phtml b/application/modules/default/views/scripts/home/partials/common_rightsidebar.phtml
index aa265eb17..1e3fdfb62 100644
--- a/application/modules/default/views/scripts/home/partials/common_rightsidebar.phtml
+++ b/application/modules/default/views/scripts/home/partials/common_rightsidebar.phtml
@@ -1,230 +1,172 @@
.
**/
$modelInfo = new Default_Model_Info();
$this->supporters = $modelInfo->getNewActiveSupporters(9);
$helpPrintDate = new Default_View_Helper_PrintDate();
?>
=$this->countSupporters?> people support
those who create freedom
supporters as $user) {
if($i++>6) break;
?>
see all
inlineScript()->appendScript(
' $(document).ready(function(){
RssNews.setup();
- BlogJson.setup();
+ BlogJson.setup();
+ GitlabNewProjectsJson.setup();
});
');
\ No newline at end of file
diff --git a/application/modules/default/views/scripts/logout/logout.phtml b/application/modules/default/views/scripts/logout/logout.phtml
index 0d91e5b35..edf8c660e 100644
--- a/application/modules/default/views/scripts/logout/logout.phtml
+++ b/application/modules/default/views/scripts/logout/logout.phtml
@@ -1,43 +1,44 @@
Please Wait...
getRequest();
$http_scheme = 'https';
if (APPLICATION_ENV == 'development') {
$http_scheme = $request->getScheme();
}
$config = Zend_Registry::get('config')->settings->domain;
$info = new Default_Model_Info();
$domains = $info->getActiveStoresForCrossDomainLogin();
foreach ($domains as $domain) {
echo ' ';
}
?>
+
\ No newline at end of file
diff --git a/httpdocs/theme/flatui/js/script.js b/httpdocs/theme/flatui/js/script.js
index bc1db5d46..5c241ca66 100644
--- a/httpdocs/theme/flatui/js/script.js
+++ b/httpdocs/theme/flatui/js/script.js
@@ -1,2186 +1,2221 @@
/**
* ocs-webserver
*
* Copyright 2016 by pling GmbH.
*
* This file is part of ocs-webserver.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
**/
var newProductPage = (function () {
return {
setup: function () {
function adjustScrollableContentHeight() {
var pling_box_height = $('#pling-it-box').height();
$('.scrollable-content').height(pling_box_height);
$('.scrollable-content').jScrollPane({
mouseWheelSpeed: 30
});
}
function adjustSupportersHeight() {
var comments_height = $('#donations-panel').find('#comments').height();
var supporters_height = $('#donations-panel').find('#supporters').height();
if (comments_height > supporters_height) {
$('#donations-panel').find('#supporters').height(comments_height);
}
}
$(document).ready(function () {
adjustScrollableContentHeight();
adjustSupportersHeight();
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
adjustSupportersHeight();
});
});
}
}
})();
// only instantiate when needed to instantiate:
var ImagePreview = {
hasError: false,
setup: function () {
this.initProductPicture();
this.initTitlePicture();
this.initProfilePicture();
this.initProfilePictureBackground();
},
previewImage: function (input, img_id) {
if (input.files && input.files[0]) {
var reader = new FileReader();
var image = new Image();
var file = input.files[0];
reader.readAsDataURL(input.files[0]);
reader.onload = function (_image) {
var image_element = $('#' + img_id);
image.src = _image.target.result; // url.createObjectURL(file);
image.onload = function () {
var w = this.width,
h = this.height,
t = file.type, // ext only: // file.type.split('/')[1],
n = file.name,
s = ~~(file.size / 1024); // + 'KB'
ImagePreview.hasError = false;
image_element.parent().parent().find('div.bg-danger').remove();
if (w > 2000 || w < 20 || h > 2000 || h < 20) {
//image_element.attr('src', '').hide().parent().append('Wrong image dimensions
');
image_element.parent().parent().append('Wrong image dimensions
');
//input.val(null);
//$(input).replaceWith(input = $(input).clone(true));
$($(input).closest('form')[0]).trigger('reset');
ImagePreview.hasError = true;
}
if (s > 2000) {
//image_element.attr('src', '').hide().parent().append('File too large
');
image_element.parent().parent().append('File too large
');
//input.val(null);
//$(input).replaceWith(input = $(input).clone(true));
$($(input).closest('form')[0]).trigger('reset');
ImagePreview.hasError = true;
}
var allowedExtensions = /(jpg|jpeg|png|gif)$/i;
if(!allowedExtensions.exec(t)) {
image_element.parent().parent().append('Invalid file type: ' + file.type + '
');
//input.val(null);
//$(input).replaceWith(input = $(input).clone(true));
$($(input).closest('form')[0]).trigger('reset');
ImagePreview.hasError = true;
}
if (false == ImagePreview.hasError) {
ImagePreview.hasError = false;
image_element.attr('src', _image.target.result);
image_element.show();
}
};
image.onerror = function () {
image_element.parent().parent().find('div.bg-danger').remove();
image_element.parent().parent().append('Invalid file type: ' + file.type + '
');
};
//image_element.attr('src', _image.target.result);
//image_element.show();
if (img_id == 'product-picture-preview') {
$('button#add-product-picture').text('CHANGE LOGO');
} else if (img_id == 'title-picture-preview') {
$('button#add-title-picture').text('CHANGE BANNER');
} else if (img_id == 'profile-picture-preview') {
$('button#add-profile-picture').text('CHANGE PICTURE');
$('input#profile_img_src').val('local');
} else if (img_id == 'profile-picture-bg-preview') {
$('button#add-profile-picture-background').text('CHANGE PICTURE');
}
};
}
},
previewImageMember: function (input, img_id) {
if (input.files && input.files[0]) {
var reader = new FileReader();
var image = new Image();
var file = input.files[0];
reader.readAsDataURL(input.files[0]);
reader.onload = function (_image) {
var image_element = $('#' + img_id);
image.src = _image.target.result; // url.createObjectURL(file);
image.onload = function () {
ImagePreview.hasError = false;
image_element.parent().find('.image-error').remove();
if (false == ImagePreview.hasError) {
image_element.attr('src', _image.target.result);
image_element.show();
}
};
image.onerror = function () {
image_element.parent().append('Invalid file type
');
};
if (img_id == 'profile-picture-background-preview') {
$('button#add-profile-picture-background').text('CHANGE PICTURE');
}
};
}
},
readImage: function (file) {
var reader = new FileReader();
var image = new Image();
reader.readAsDataURL(file);
reader.onload = function (_file) {
image.src = _file.target.result; // url.createObjectURL(file);
image.onload = function () {
var w = this.width,
h = this.height,
t = file.type, // ext only: // file.type.split('/')[1],
n = file.name,
s = ~~(file.size / 1024) + 'KB';
$('#uploadPreview').append(' ' + w + 'x' + h + ' ' + s + ' ' + t + ' ' + n + ' ');
};
image.onerror = function () {
alert('Invalid file type: ' + file.type);
};
};
},
initProductPicture: function () {
if ($('#image_small').length == 0) {
return;
}
if ($('#image_small').attr('value').length == 0) {
return;
}
var imageTarget = $('#image_small').data('target');
$(imageTarget).attr('src', 'https://cn.opendesktop.org/cache/200x200-2/img/' + $('#image_small').attr('value'));
$(imageTarget).show();
$('button#add-product-picture').text('CHANGE LOGO');
},
initTitlePicture: function () {
if ($('#image_big').length == 0) {
return;
}
if ($('#image_big').attr('value').length == 0) {
return;
}
var imageTarget = $('#image_big').data('target');
$(imageTarget).attr('src', 'https://cn.opendesktop.org/cache/200x200-2/img/' + $('#image_big').attr('value'));
$(imageTarget).show();
$('button#add-title-picture').text('CHANGE BANNER');
},
initProfilePicture: function () {
if ($('#profile_image_url').length == 0) {
return;
}
if ($('#profile_image_url').attr('value').length == 0) {
return;
}
var imageTarget = $('#profile_image_url').data('target');
$(imageTarget).attr('src', $('#profile_image_url').attr('value'));
$('#profile-picture').attr('src', $('#profile_image_url').attr('value'));
$(imageTarget).show();
$('button#add-profile-picture').text('CHANGE PICTURE');
},
initProfilePictureBackground: function () {
if ($('#profile_image_url_bg').length == 0) {
return;
}
if ($('#profile_image_url_bg').attr('value').length == 0) {
return;
}
var imageTarget = $('#profile_image_url_bg').data('target');
$(imageTarget).attr('src', $('#profile_image_url_bg').attr('value'));
$('#profile-picture-background-preview').attr('src', $('#profile_image_url_bg').attr('value'));
$(imageTarget).show();
$('button#add-profile-picture-background').text('CHANGE PICTURE');
}
};
var MenuHover = (function () {
return {
setup: function () {
$('body').on('click', 'a#login-dropdown', function (event) {
event.stopPropagation();
$('.header-login-container').toggleClass('active');
}).on('click', '.header-login-container', function (event) {
event.stopPropagation();
}).on('click', 'a.menu-trigger', function (event) {
event.stopPropagation();
var html_menu_element = '.' + $(this).attr('rel');
$(html_menu_element).toggleClass('active');
}).on('mouseup', function (event) {
var container = $('ul.profile-menu');
var trigger = $('li.profile-menu-container a.menu-trigger');
if (trigger.is(event.target)) {
return;
}
if (!container.is(event.target) // if the target of the click isn't the container...
&& container.has(event.target).length === 0) // ... nor a descendant of the container
{
container.removeClass('active');
}
}).on('mouseup', function (event) {
container = $('div.header-login-container');
trigger = $('a#login-dropdown');
if (trigger.is(event.target)) {
return;
}
if (!container.is(event.target) // if the target of the click isn't the container...
&& container.has(event.target).length === 0) // ... nor a descendant of the container
{
container.removeClass('active');
}
}).click(function () {
$('.header-login-container.active').removeClass('active');
$('.profile-menu.active').removeClass('active');
});
}
};
})();
var ButtonCode = (function () {
return {
setup: function () {
$('#button-code-heading').click(function () {
if ($(this).hasClass('button-code-active')) {
$(this).removeClass('button-code-active');
$(this).parent().find('.button-code').slideUp('fast');
$(this).parent().find('.button-code').css('border-bottom', 'none');
$(this).find('.icon-expand-code').css('background-image', 'url(img/icon-expand.png)');
} else {
$(this).addClass('button-code-active');
$(this).parent().find('.button-code').css('border-bottom', '1px solid #bdc3c7');
$(this).parent().find('.button-code').slideDown('fast');
$(this).find('.icon-expand-code').css('background-image', 'url(img/icon-contract.png)');
}
})
},
setupClipboardCopy: function (containerId) {
$(containerId).on('mouseover', function () {
$(this).off('mouseover');
$(this).find('[data-clipboard-target]').each(function () {
var clipboardTarget = $($(this).attr('data-clipboard-target'));
$(this).zclip({
path: '/theme/flatui/js/lib/ZeroClipboard.swf',
copy: $.trim($(clipboardTarget).text())
});
});
});
}
};
})();
var ProductPage = (function () {
return {
setup: function () {
$(".dropdown-toggle").dropdown();
$('.scroll-pane').jScrollPane({
mouseWheelSpeed: 30,
animateScroll: true
});
$('.love-it').on('click', function () {
this_img_src = $(this).find('img').attr('src');
if (!$(this).hasClass('no-login') && this_img_src != '/theme/flatui/img/icon-like-color.png') {
$(this).prev('.share-it').trigger('click');
}
});
$('.payment-options').find('.options').find('span.option').on('click', function () {
var this_number = $(this).attr('title');
var number_input = $('.payment-options').find('input[type="number"]');
number_input.attr('value', this_number).val(this_number);
number_input.focus();
$('.options').find('.selected').removeClass('selected');
$(this).addClass('selected');
});
},
setupPlingButton: function () {
$('#pling-amount').on('focus', function () {
$('#pling-amount').popover('destroy');
});
$('#pling-start').on('click', function (event) {
validateElement = $('#pling-amount');
validateValue = validateElement.val();
if (validateValue == '' || (isNaN(parseFloat(validateValue)) || !isFinite(validateValue))) {
event.preventDefault();
$('#pling-amount').popover({
placement: 'bottom',
html: 'true',
content: '× Donation must be a numeric value.
'
}).popover('show');
return false;
}
minValue = validateElement.attr('min');
if (parseFloat(validateValue) < parseFloat(minValue)) {
event.preventDefault();
$('#pling-amount').popover({
placement: 'bottom',
html: 'true',
content: '× Donation must be equal or greater than ' + minValue + '.
'
}).popover('show');
return false;
}
maxValue = validateElement.attr('max');
if (parseFloat(validateValue) > parseFloat(maxValue)) {
event.preventDefault();
$('#pling-amount').popover({
placement: 'bottom',
html: 'true',
content: '× Donation must be smaller or equal than ' + maxValue + '.
'
}).popover('show');
return false;
}
});
function minmax(value, min, max) {
if (parseInt(value) < 0 || isNaN(value))
return 0;
else if (parseInt(value) > 100)
return 100;
else return value;
}
}
}
})();
var SlideShowRender = (function () {
return {
setup: function () {
// add the active class to the first image
$('#slideshow-container').find('img:first').addClass('active');
$('#slideshow-container').find('#navigation').find('a:first').addClass('active');
// trigger slideshow
//SlideShow.setup();
}
}
})();
var ProductSlideShow = (function () {
return {
setup: function () {
// arrows function
$('#slideshow-container').find('#arrows').find('a').on('click', function (e) {
var this_id = $(this).attr('id');
var slides = $('#slideshow-container #slides');
var current_img = slides.find('img.active');
var current_img_rel = current_img.attr('rel');
var current_nav_link = $('#slideshow-container').find('#navigation').find('a.active');
if (this_id == 'prev') {
var prev_img_rel = parseInt(current_img_rel) - parseInt(1);
var next_active_img = $('#slideshow-container').find('img[rel="' + prev_img_rel + '"]');
var next_active_nav_link = $('#slideshow-container').find('#navigation').find('a[rel="' + prev_img_rel + '"]');
if (!next_active_img.size() == 1) {
var next_active_img = slides.find('img:last');
var next_active_nav_link = $('#slideshow-container').find('#navigation').find('a:last');
}
} else if (this_id == 'next') {
var next_img_rel = parseInt(current_img_rel) + parseInt(1);
var next_active_img = $('#slideshow-container').find('img[rel="' + next_img_rel + '"]');
var next_active_nav_link = $('#slideshow-container').find('#navigation').find('a[rel="' + next_img_rel + '"]');
if (!next_active_img.size() == 1) {
var next_active_img = slides.find('img:first');
var next_active_nav_link = $('#slideshow-container').find('#navigation').find('a:first');
}
}
current_img.removeClass('active');
current_nav_link.removeClass('active');
next_active_img.addClass('active');
next_active_nav_link.addClass('active');
//clearTimeout(slideShowInterval);
//SlideShow.setup();
});
// navigation function
$('#slideshow-container').find('#navigation').find('a').on('click', function () {
var this_rel = $(this).attr('rel');
var this_image = $('#slideshow-container').find('img[rel="' + this_rel + '"]');
$('#slideshow-container').find('img.active').removeClass('active');
this_image.addClass('active');
$('#slideshow-container').find('#navigation').find('a.active').removeClass('active');
$(this).addClass('active');
});
}
}
})();
var SlideShow = (function () {
return {
setup: function () {
slideShowInterval = setTimeout(function () {
var current_img = $('#slideshow-container').find('img.active');
var current_img_rel = current_img.attr('rel');
var next_img_rel = parseInt(current_img_rel) + parseInt(1);
var next_img = $('#slideshow-container').find('img[rel="' + next_img_rel + '"]');
var current_nav_link = $('#slideshow-container').find('#navigation').find('a.active');
current_img.removeClass('active');
current_nav_link.removeClass('active');
if (next_img.size() == 1) {
next_img.addClass('active');
$('#slideshow-container').find('#navigation').find('a[rel="' + next_img_rel + '"]').addClass('active');
} else {
$('#slideshow-container').find('img:first').addClass('active');
$('#slideshow-container').find('#navigation').find('a:first').addClass('active');
}
//SlideShow.setup();
}, 4000);
}
}
})();
var Popuppanel = (function () {
return {
setup: function () {
$('.popuppanel').on('click', function (event) {
if ($(this).attr('target') === "_blank"){
console.log('dont prevent default');
} else {
event.preventDefault();
var hf = $(this).attr('href');
$.fancybox({
'hideOnContentClick': true,
'autoScale': true,
'cyclic': 'true',
'transitionIn': 'elastic',
'transitionOut': 'elastic',
'type': 'iframe',
'scrolling': 'auto',
helpers: {
overlay: {
locked: false
}
},
autoSize: true,
href: hf,
type: 'ajax'
});
}
});
}
}
})();
var PlingsRedirect = (function () {
return {
setup: function () {
if(window.location.hash) {
$link = $(window.location.hash);
$link.trigger("click");
} else if (document.location.hash) {
$link = $(document.location.hash);
$link.trigger("click");
}
}
}
})();
var ShowPopups = (function () {
return {
setup: function () {
if(window.location.hash) {
alert('Hash');
$('a[href="' + document.location.hash + '"]').trigger("click");
}
if (document.location.hash) {
alert('Hash');
$('a[href="' + document.location.hash + '"]').trigger("click");
}
}
}
})();
/** PRODUCT PAGE **/
// tool tips
$('body').on('mouseenter', '.supporter-thumbnail', function () {
$(this).popover('show');
});
$('body').on('mouseleave', '.supporter-thumbnail', function () {
$(this).popover('hide');
});
var Partials = (function () {
return {
setup: function () {
$('body').on('click', 'a.partial', function (event) {
event.preventDefault();
var url = this.href;
var target = $(this).attr("data-target");
var toggle = $(this).data('toggle');
var pageFragment = $(this).attr("data-fragment");
$(target).load(url + ' ' + pageFragment, function (response, status, xhr) {
if (status == "error") {
if (xhr.status == 401) {
if (response) {
var data = jQuery.parseJSON(response);
var redirect = data.login_url;
if (redirect) {
window.location = redirect;
} else {
window.location = "/login";
}
}
} else {
$(target).empty().html('Service is temporarily unavailable. Our engineers are working quickly to resolve this issue. Find out why you may have encountered this error.');
}
}
if (toggle) {
$(toggle).modal('show');
}
});
return false;
});
}
}
})();
var OpendownloadfileWerbung= (function () {
return {
setup: function () {
$('body').on('click', 'a.opendownloadfile', function (event) {
event.preventDefault();
var file_id = $(this).attr("data-file_id");
var file_type = $(this).attr('data-file_type');
var file_name = $(this).attr('data-file_name');
var file_size = $(this).attr('data-file_size');
var project_id = $(this).attr('data-project_id');
var link_type = $(this).attr('data-link_type');
$.fancybox({
'hideOnContentClick': true,
'autoScale': true,
'scrolling' : 'no',
'cyclic': 'true',
'transitionIn': 'elastic',
'transitionOut': 'elastic',
'type': 'iframe',
'width':'300',
'height':'200',
'iframe': {'scrolling': 'yes'},
'autoSize':false,
'id': 'opendownloadfilepopup',
helpers: {
overlay: {
locked: false
}
},
href:'/dl?file_id='+file_id+'&file_type='+file_type+'&file_name='+file_name+'&file_size='+file_size+'&project_id='+project_id+'&link_type='+link_type
});
return false;
});
}
}
})();
var PartialsButton = (function () {
return {
setup: function () {
$('body').on('click', 'Button.partialbutton', function (event) {
event.preventDefault();
var url = $(this).attr("data-href");
var target = $(this).attr("data-target");
var toggle = $(this).data('toggle');
var pageFragment = $(this).attr("data-fragment");
var spin = $(' ');
$(target).append(spin);
$(target).load(url + ' ' + pageFragment, function (response, status, xhr) {
if (status == "error") {
if (xhr.status == 401) {
if (response) {
var data = jQuery.parseJSON(response);
var redirect = data.login_url;
if (redirect) {
window.location = redirect;
} else {
window.location = "/login";
}
}
} else {
$(target).empty().html('Service is temporarily unavailable. Our engineers are working quickly to resolve this issue. Find out why you may have encountered this error.');
}
}
if (toggle) {
$(toggle).modal('show');
}
});
return false;
});
}
}
})();
var PartialsButtonHeartDetail = (function () {
return {
setup: function () {
$('body').on('click', '.partialbuttonfollowproject', function (event) {
event.preventDefault();
var url = $(this).attr("data-href");
var target = $(this).attr("data-target");
var auth = $(this).attr("data-auth");
var toggle = $(this).data('toggle');
var pageFragment = $(this).attr("data-fragment");
if (!auth) {
$('#like-product-modal').modal('show');
return;
}
// product owner not allow to heart copy from voting....
var loginuser = $('#like-product-modal').find('#loginuser').val();
var productcreator = $('#like-product-modal').find('#productcreator').val();
if (loginuser == productcreator) {
// ignore
$('#like-product-modal').find('#votelabel').text('Project owner not allowed');
$('#like-product-modal').find('.modal-body').empty();
$('#like-product-modal').modal('show');
return;
}
var spin = $(' ');
$(target).prepend(spin);
$.ajax({
url: url,
cache: false
})
.done(function( response ) {
$(target).find('.spinning').remove();
if(response.status =='error'){
$(target).html( response.msg );
}else{
if(response.action=='delete'){
//$(target).find('.likelabel').html(response.cnt +' Likes');
$(target).find('.plingtext').html(response.cnt);
$(target).find('.plingtext').addClass('heartnumberpurple');
$(target).find('.plingheart').removeClass('heartproject').addClass('heartgrey');
$(target).find('.plingheart').removeClass('fa-heart').addClass('fa-heart-o');
}else{
//$(target).find('.likelabel').html(response.cnt +' Likes');
$(target).find('.plingtext').html(response.cnt);
//$(target).find('.plingtext').html(response.cnt+' Fans');
$(target).find('.plingtext').removeClass('heartnumberpurple');
$(target).find('.plingheart').removeClass('heartgrey').addClass('heartproject');
$(target).find('.plingheart').removeClass('fa-heart-o').addClass('fa-heart');
}
}
});
return false;
});
}
}
})();
var PartialsButtonPlingProject = (function () {
return {
setup: function () {
$('#plingbtn').hover(function(){
$(this).attr('src','/images/system/pling-btn-hover.png');
}, function(){
$(this).attr('src',$(this).attr('data-src'));
});
$('body').on('click', '.partialbuttonplingproject', function (event) {
event.preventDefault();
var url = $(this).attr("data-href");
var target = $(this).attr("data-target");
var auth = $(this).attr("data-auth");
var issupporter = $(this).attr("data-issupporter");
var toggle = $(this).data('toggle');
var pageFragment = $(this).attr("data-fragment");
if (!auth) {
$('#like-product-modal').modal('show');
return;
}
// product owner not allow to heart copy from voting....
var loginuser = $('#like-product-modal').find('#loginuser').val();
var productcreator = $('#like-product-modal').find('#productcreator').val();
if (loginuser == productcreator) {
// ignore
$('#like-product-modal').find('#votelabel').text('Project owner not allowed');
$('#like-product-modal').find('.modal-body').empty();
$('#like-product-modal').modal('show');
return;
}
if (!issupporter) {
// ignore
$('#like-product-modal').find('#votelabel').html('To pling a product and help the artist please consider becoming a supporter. Thanks!
Become a supporter ');
$('#like-product-modal').modal('show');
return;
}
$(target).find('.plingnum').html(' ');
$.ajax({
url: url,
cache: false
})
.done(function( response ) {
//$(target).find('.spinning').remove();
if(response.status =='error'){
$(target).html( response.msg );
}else{
if(response.action=='delete'){
//pling deleted
if(response.cnt==0)
{
$(target).find('.plingnum').html('Pling me');
}else
{
$(target).find('.plingnum').html(response.cnt+ ' Plings');
}
$(target).find('#plingbtn').attr('src','/images/system/pling-btn-normal.png');
$(target).find('#plingbtn').attr('data-src','/images/system/pling-btn-normal.png');
}else{
//pling inserted
$(target).find('.plingnum').html(response.cnt+ ' Plings');
$(target).find('#plingbtn').attr('src','/images/system/pling-btn-active.png');
$(target).find('#plingbtn').attr('data-src','/images/system/pling-btn-active.png');
}
}
});
return false;
});
}
}
})();
var PartialsReview = (function () {
return {
setup: function () {
$('body').on('click', 'a.partialreview', function (event) {
event.preventDefault();
var url = this.href;
var target = $(this).attr("data-target");
var toggle = $(this).data('toggle');
var pageFragment = $(this).attr("data-fragment");
// product owner not allow to vote
var loginuser = $('#review-product-modal').find('#loginuser').val();
var productcreator = $('#review-product-modal').find('#productcreator').val();
if (loginuser == productcreator) {
// ignore
$('#review-product-modal').find('#votelabel').text('Project owner not allowed');
$('#review-product-modal').find('.modal-body').empty();
$('#review-product-modal').modal('show');
return;
}
var userrate = $('#review-product-modal').find('#userrate').val();
// -1 = no rate yet. 0= dislike 1=like
if ($(this).hasClass("voteup")) {
if (userrate == 1) {
$('#review-product-modal').find('#votelabel').empty()
.append(' is given already with comment:');
$('#review-product-modal').find('#commenttext').val($('#review-product-modal').find('#otxt').val());
//$('#review-product-modal').find(':submit').attr("disabled", "disabled").css("display", "none");
//$('#review-product-modal').find('#commenttext').attr("disabled", "disabled");
$('#review-product-modal').find(':submit').text("Remove Rating");
} else {
$('#review-product-modal').find('input#voteup').val(1);
$('#review-product-modal').find('#votelabel').empty()
.append(' Add Comment (min. 1 char):');
$('#review-product-modal').find('#commenttext').val('+');
$('#review-product-modal').find(':submit').text("Rate Now");
$('#review-product-modal').find('#commenttext').removeAttr("disabled");
$('#review-product-modal').find(':submit').css("display", "block").removeAttr("disabled");
}
} else { // vote down
if (userrate == 0) {
$('#review-product-modal').find('#votelabel').empty()
.append(' is given already with comment: ');
$('#review-product-modal').find('#commenttext').val($('#review-product-modal').find('#otxt').val());
// $('#review-product-modal').find('#commenttext').attr("disabled", "disabled");
// $('#review-product-modal').find(':submit').attr("disabled", "disabled").css("display", "none");
$('#review-product-modal').find(':submit').text("Remove Rating");
} else {
$('#review-product-modal').find('input#voteup').val(2);
$('#review-product-modal').find('#votelabel').empty()
.append(' Add Comment (min. 5 char) Please explain the reason for downvote to help the creator to make it better ');
$('#review-product-modal').find('#commenttext').val('-');
$('#review-product-modal').find('#commenttext').removeAttr("disabled");
$('#review-product-modal').find(':submit').removeAttr("disabled").css("display", "block");
$('#review-product-modal').find(':submit').text("Rate Now");
}
}
$('#review-product-modal').modal('show');
if ($('#review-product-modal').hasClass('noid')) {
setTimeout(function () {
$('#review-product-modal').modal('hide');
}, 2000);
}
return false;
});
}
}
})();
var PartialsReviewDownloadHistory = (function () {
return {
setup: function () {
$('body').on('click', 'button.partialReviewDownloadHistory', function (event) {
event.preventDefault();
var userrate = $(this).attr("data-userrate");
// -1 = no rate yet. 0= dislike 1=like
$('#review-product-modal').find('#commenttext').val($(this).attr("data-comment"));
$('#review-product-modal').find('#form_p').val($(this).attr("data-project"));
if ($(this).hasClass("voteup")) {
if (userrate == 1) {
$('#review-product-modal').find('#votelabel').empty()
.append(' is given already with comment:');
$('#review-product-modal').find(':submit').attr("disabled", "disabled").css("display", "none");
$('#review-product-modal').find('#commenttext').attr("disabled", "disabled");
} else {
$('#review-product-modal').find('input#voteup').val(1);
$('#review-product-modal').find('#votelabel').empty()
.append(' Add Comment (min. 1 char):');
$('#review-product-modal').find('#commenttext').val('+');
$('#review-product-modal').find('#commenttext').removeAttr("disabled");
$('#review-product-modal').find(':submit').css("display", "block").removeAttr("disabled");
}
} else { // vote down
if (userrate == 0) {
$('#review-product-modal').find('#votelabel').empty()
.append(' is given already with comment: ');
$('#review-product-modal').find('#commenttext').attr("disabled", "disabled");
$('#review-product-modal').find(':submit').attr("disabled", "disabled").css("display", "none");
} else {
$('#review-product-modal').find('input#voteup').val(2);
$('#review-product-modal').find('#votelabel').empty()
.append(' Add Comment (min. 5 chars): ');
$('#review-product-modal').find('#commenttext').val('-');
$('#review-product-modal').find('#commenttext').removeAttr("disabled");
$('#review-product-modal').find(':submit').removeAttr("disabled").css("display", "block");
}
}
$('#review-product-modal').modal('show');
if ($('#review-product-modal').hasClass('noid')) {
setTimeout(function () {
$('#review-product-modal').modal('hide');
}, 2000);
}
return false;
});
}
}
})();
var PartialForms = (function () {
return {
setup: function () {
$('body').on("submit", 'form.partial', function (event) {
event.preventDefault();
event.stopImmediatePropagation();
$(this).find(':submit').attr("disabled", "disabled");
$(this).find(':submit').css("white-space", "normal");
var spin = $(' ');
$(this).find(':submit').append(spin);
var target = $(this).attr("data-target");
var trigger = $(this).attr("data-trigger");
console.log(this);
jQuery.ajax({
data: $(this).serialize(),
url: this.action,
type: this.method,
error: function () {
$(target).empty().html("Service is temporarily unavailable. Our engineers are working quickly to resolve this issue. Find out why you may have encountered this error. ");
return false;
},
success: function (results) {
$(target).empty().html(results);
$(target).find(trigger).trigger('click');
return false;
}
});
return false;
});
}
}
})();
var PartialJson = (function () {
return {
setup: function () {
$('body').on("submit", 'form.partialjson', function (event) {
event.preventDefault();
event.stopImmediatePropagation();
var target = $(this).attr("data-target");
var trigger = $(this).attr("data-trigger");
jQuery.ajax({
data: $(this).serialize(),
url: this.action,
type: this.method,
dataType: "json",
error: function () {
$(target).empty().html("Service is temporarily unavailable. Our engineers are working quickly to resolve this issue. Find out why you may have encountered this error. ");
},
success: function (data, textStatus) {
if (data.redirect) {
// data.redirect contains the string URL to redirect to
window.location = data.redirect;
return;
}
if (target) {
// data.message contains the HTML for the replacement form
$(target).empty().html(data.message);
}
if (trigger) {
$(target).find(trigger).trigger('click');
}
}
});
return false;
});
}
}
})();
var PartialJsonFraud = (function () {
return {
setup: function () {
$('body').on("submit", 'form.partialjsonfraud', function (event) {
event.preventDefault();
event.stopImmediatePropagation();
var target = $(this).attr("data-target");
var trigger = $(this).attr("data-trigger");
var text = $('form.partialjsonfraud').find('#report-text').val();
if(text.length<5)
{
$('form.partialjsonfraud').find('p.warning').remove();
$('form.partialjsonfraud').find('#report-text').parent().append('at least 5 chars
');
return false;
}
jQuery.ajax({
data: $(this).serialize(),
url: this.action,
type: this.method,
dataType: "json",
error: function () {
$(target).empty().html("Service is temporarily unavailable. Our engineers are working quickly to resolve this issue. Find out why you may have encountered this error. ");
},
success: function (data, textStatus) {
if (data.redirect) {
// data.redirect contains the string URL to redirect to
window.location = data.redirect;
return;
}
if (target) {
// data.message contains the HTML for the replacement form
$(target).empty().html(data.message);
}
if (trigger) {
$(target).find(trigger).trigger('click');
}
}
});
return false;
});
}
}
})();
var PartialPayPal = (function () {
return {
setup: function () {
this.initPayPalForm();
this.initPayPalFee();
},
initPayPalForm: function () {
$('body').on("submit", 'form.partialpaypal', function (event) {
event.preventDefault();
event.stopImmediatePropagation();
var target = $(this).attr("data-target");
var trigger = $(this).attr("data-trigger");
jQuery.ajax({
data: $(this).serialize(),
url: this.action,
type: this.method,
error: function (jqXHR, textStatus, errorThrown) {
$('#modal-dialog').modal('hide');
var msgBox = $('
');
msgBox.html($(jqXHR.responseText).filter('.page-container').children());
msgBox.append('');
setTimeout(function () {
msgBox.modal('show');
}, 900);
},
success: function (results) {
$(target).empty().html(results);
$(target).find(trigger).trigger('click');
$('#modal-dialog').modal('hide');
}
});
return false;
});
},
initPayPalFee: function () {
$('body').on("change", '#amount_plings', function (event) {
PartialPayPal.changeFee();
});
},
changeFee: function () {
var e = document.getElementById('amount_plings');
var value = parseFloat(e.value);
var pling_fee = this.round((value) * 0.05, 2);
var pling_sum = (pling_fee) + (value);
var paypal_fee = (pling_sum + 0.3) * 0.03 + 0.3;
paypal_fee = this.round(paypal_fee, 2);
var sum = value + pling_fee + paypal_fee;
document.getElementById('pling_fee').value = this.round(pling_fee, 2).toFixed(2);
document.getElementById('paypal_fee').value = this.round(paypal_fee, 2).toFixed(2);
document.getElementById('sum').value = this.round(sum, 2);
},
round: function (x, n) {
var a = Math.pow(10, n);
return (Math.round(x * a) / a);
}
}
})();
var PartialCommentReviewForm = (function () {
return {
setup: function () {
this.initForm();
},
initForm: function () {
$('body').on("submit", 'form.product-add-comment-review', function (event) {
event.preventDefault();
event.stopImmediatePropagation();
var c = $.trim($('#commenttext').val());
var v = $('#voteup').val();
if(v==2) {
// votedown
if(c.length<5)
{
if($('#review-product-modal').find('#votelabel').find('.warning').length==0)
{
$('#review-product-modal').find('#votelabel').append(" Please give a comment, thanks! ");
}
return;
}
}
if(c.length<1)
{
if($('#review-product-modal').find('#votelabel').find('.warning').length==0)
{
$('#review-product-modal').find('#votelabel').append(" Please give a comment, thanks! ");
}
return;
}
$(this).find(':submit').attr("disabled", "disabled");
$(this).find(':submit').css("white-space", "normal");
var spin = $(' ');
$(this).find(':submit').append(spin);
jQuery.ajax({
data: $(this).serialize(),
url: this.action,
type: this.method,
error: function (jqXHR, textStatus, errorThrown) {
$('#review-product-modal').modal('hide');
var msgBox = $('#generic-dialog');
msgBox.modal('hide');
msgBox.find('.modal-header-text').empty().append('Please try later.');
msgBox.find('.modal-body').empty().append("Service is temporarily unavailable. Our engineers are working quickly to resolve this issue. Find out why you may have encountered this error. ");
setTimeout(function () {
msgBox.modal('show');
}, 900);
},
success: function (results) {
$('#review-product-modal').modal('hide');
location.reload();
}
});
return false;
});
}
}
})();
var PartialFormsAjax = (function () {
return {
setup: function () {
var form = $('form.partialajax');
var target = form.attr("data-target");
var trigger = form.attr("data-trigger");
$(form).find(':submit').on('click', function (e) {
e.preventDefault();
$(form).find(':submit').attr("disabled", "disabled");
$(form).find(':submit').css("white-space", "normal");
var spin = $(' ');
$(form).find(':submit').append(spin);
$(form).submit();
});
form.ajaxForm({
error: function () {
$(target).empty().html("Service is temporarily unavailable. Our engineers are working quickly to resolve this issue. Find out why you may have encountered this error. ");
},
success: function (results) {
$(target).empty().html(results);
$(target).find(trigger).trigger('click');
}
});
}
}
})();
var AjaxFormWithProgress = (function () {
return {
setup: function (idForm) {
var form = $(idForm);
var target = form.attr("data-target");
var trigger = form.attr("data-trigger");
var bar = form.find('.progress-bar');
var percent = form.find('.progress-percent');
$(form).find(':submit').on('click', function (e) {
e.preventDefault();
$(form).find(':submit').attr("disabled", "disabled");
$(form).find(':submit').css("white-space", "normal");
var spin = $(' ');
$(form).find(':submit').append(spin);
$(form).submit();
});
form.ajaxForm({
beforeSend: function() {
var percentVal = '0%';
bar.parent().removeClass('hidden');
bar.width(percentVal);
percent.html(percentVal);
},
uploadProgress: function(event, position, total, percentComplete) {
var percentVal = percentComplete + '%';
bar.width(percentVal);
percent.html(percentVal);
},
error: function () {
$(target).empty().html("Service is temporarily unavailable. Our engineers are working quickly to resolve this issue. Find out why you may have encountered this error. ");
},
success: function (results) {
var percentVal = '100%';
bar.width(percentVal);
percent.html(percentVal);
$(target).empty().html(results);
$(target).find(trigger).trigger('click');
}
});
}
}
})();
var PartialFormsAjaxMemberBg = (function () {
return {
setup: function () {
var form = $('form.partialajaxbg');
var target = form.attr("data-target");
var trigger = form.attr("data-trigger");
$(form).find(':submit').on('click', function (e) {
e.preventDefault();
$(form).find(':submit').attr("disabled", "disabled");
$(form).find(':submit').css("white-space", "normal");
var spin = $(' ');
$(form).find(':submit').append(spin);
$(form).submit();
});
form.ajaxForm({
error: function () {
$(target).empty().html("Service is temporarily unavailable. Our engineers are working quickly to resolve this issue. Find out why you may have encountered this error. ");
},
success: function (results) {
$(target).empty().html(results);
$(target).find(trigger).trigger('click');
}
});
}
}
})();
var AjaxForm = (function () {
return {
setup: function (idElement, idTargetElement) {
var target = $(idTargetElement);
$('body').on("submit", 'form.product-add-comment', function (event) {
event.preventDefault();
event.stopImmediatePropagation();
$(this).find('button').attr("disabled", "disabled");
$(this).find('.glyphicon.glyphicon-send').removeClass('glyphicon-send').addClass('glyphicon-refresh spinning');
jQuery.ajax({
data: $(this).serialize(),
url: this.action,
type: this.method,
dataType: "json",
error: function (jqXHR, textStatus, errorThrown) {
var results = JSON && JSON.parse(jqXHR.responseText) || $.parseJSON(jqXHR.responseText);
var msgBox = $('#generic-dialog');
msgBox.modal('hide');
msgBox.find('.modal-header-text').empty().append(results.title);
msgBox.find('.modal-body').empty().append(results.message);
setTimeout(function () {
msgBox.modal('show');
}, 900);
},
success: function (results) {
if (results.status == 'ok') {
$(target).empty().html(results.data);
}
if (results.status == 'error') {
if (results.message != '') {
alert(results.message);
} else {
alert('Service is temporarily unavailable.');
}
}
}
});
return false;
});
}
}
})();
var WidgetModalAjax = (function () {
return {
setup: function () {
$('.my-product-item').find('a.widget-button').on('click', function () {
var this_rel = $(this).attr('rel');
var this_product_id = this_rel.split('product')[1];
var target = $('.modal-body#widget-code-' + this_rel);
$.ajax({
url: '/widget/config/' + this_product_id,
type: 'html',
success: function (results) {
target.prepend(results);
angular.bootstrap(target, ['widgetApp']);
}
});
});
}
}
})();
var LoginContainer = (function () {
return {
update: function () {
if (!Date.now) {
Date.now = function () {
return new Date().getTime();
}
}
var timestamp = Date.now() / 1000 | 0;
var target = '#login_container';
var url = '/authorization/htmllogin?' + timestamp;
$(target).load(url, function (response, status, xhr) {
// nothing to do
});
}
}
})();
var RssNews = (function () {
return {
setup: function () {
var json_url = "https://blog.opendesktop.org/?json=1&callback=?";
$.getJSON(json_url, function (res) {
var crss = '';
$.each(res.posts, function (i, item) {
if (i >= 3) {
return false;
}
var m = moment(item.date);
crss += '';
});
$("#rss-feeds").html(crss);
});
}
}
})();
var BlogJson = (function () {
return {
setup: function () {
var urlforum = 'https://forum.opendesktop.org/';
var json_url =urlforum+'latest.json';
$.ajax(json_url).then(function (result) {
var topics = result.topic_list.topics;
var crss = '';
var count =3;
topics.sort(function(a,b){
return new Date(b.last_posted_at) - new Date(a.last_posted_at);
});
$.each(topics, function (i, item) {
if(!item.pinned){
var m = moment(item.last_posted_at);
var r = 'Reply';
var t = item.posts_count -1;
if(t==0){
r = 'Replies';
}else if(t==1){
r = 'Reply';
}else{
r = 'Replies';
}
crss += '';
count--;
}
if(count==0) return false;
});
$("#blogJson").html(crss);
});
}
}
})();
+var GitlabNewProjectsJson = (function () {
+ return {
+ setup: function () {
+ var url_git = 'https://git.opendesktop.org/';
+ var json_url = 'https://git.opendesktop.org/api/v4/projects?order_by=created_at&sort=desc&visibility=public&page=1&per_page=5';
+ $.ajax(json_url).then(function (result) {
+ var topics = result;
+ var crss = '';
+
+ $.each(topics, function (i, item) {
+ var m = moment(item.created_at);
+
+ crss += '';
+
+ });
+ $("#lastgitprojects").html(crss);
+ });
+ }
+
+ }
+})();
+
var ProductDetailCarousel = (function () {
return {
setup: function () {
$('.carousel-inner img').each(function (index) {
$(this).on("click", function () {
if ($("#product-main-img-container").hasClass("imgfull")) {
$('#product-main-img-container').prependTo($('#product-main'));
} else {
$('#product-main-img-container').prependTo($('#product-page-content'));
}
$("#product-main-img-container").toggleClass("imgfull");
$("#product-main-img-container").toggleClass("imgsmall");
});
});
}
}
})();
var AppimagequestionOnClick = (function () {
return {
setup: function (projectid) {
$('body').on('click', 'i.appimagequestion', function (event) {
var msgBox = $('#generic-dialog');
msgBox.modal('show');
msgBox.find('.modal-header-text').empty().append('AppImage Info');
msgBox.find('.modal-body').empty().append("");
});
}
}
})();
var ProductDetailBtnGetItClick = (function () {
return {
setup: function (projectid) {
$('body').on('click', 'button#project_btn_download', function (event) {
$.fancybox({
'hideOnContentClick': true,
'autoScale': true,
'cyclic': 'true',
'transitionIn': 'elastic',
'transitionOut': 'elastic',
'type': 'ajax',
helpers: {
overlay: {
locked: false
}
},
autoSize: true,
href:'/p/'+projectid+'/ppload'
});
});
}
}
})();
var GhnsExcludedClick = (function () {
return {
setup: function (projectid) {
$('body').on('click', '#ghns_excluded-this-checkbox', function (event) {
event.stopPropagation();
var status = 1;
var title = '';
var btntxt = '';
if (this.checked) {
status = 1;
title = 'Please specify why this product should be excluded (min 5 chars) :';
btntxt=' ghns exclude';
} else {
status = 0;
title = 'Please specify why this product should be included (min 5 chars) :';
btntxt=' ghns include';
}
var msgBox = $('#generic-dialog');
msgBox.modal('show');
msgBox.find('.modal-header-text').empty().append('GHNS ');
msgBox.find('.modal-body').empty().append(title+
'
'+btntxt+' ');
$('body').on("click", "#btn-ghns-excluded", function(){
var txt = $('#ghns-excluded-text').val();
if(txt.length<5) {
alert('min 5 chars');
return false;
}
var project_id = $(this).attr('data-projectid');
var status = $(this).attr('data-status');
var target = "/backend/project/doghnsexclude";
$.ajax({
url: target,
method:'POST',
data:{'project_id':project_id,'ghns_excluded':status,'msg':txt},
success: function (results) {
var msgBox = $('#generic-dialog');
if (status == 0) {
msgBox.find('.modal-body').empty().append('Project is successfully included into GHNS');
$('#ghns_excluded-this-checkbox').prop("checked", false);
} else {
msgBox.find('.modal-body').empty().append('Project is successfully excluded into GHNS');
$('#ghns_excluded-this-checkbox').prop("checked", true);
}
setTimeout(function () {
msgBox.modal('hide');
}, 1000);
},
error: function () {
alert('Service is temporarily unavailable.');
}
});
});
return false;
});
}
}
})();
var AboutMeMyProjectsPaging = (function () {
return {
setup: function () {
$(window).scroll(function() {
var end = $("footer").offset().top;
var viewEnd = $(window).scrollTop() + $(window).height();
var distance = end - viewEnd;
if (distance < 300){
// }
// if($(window).scrollTop() == $(document).height() - $(window).height()) {
if(!$('button#btnshowmoreproducts').length) return;
let indicator = ' ';
let nextpage = $('button#btnshowmoreproducts').attr('data-page');
$('button#btnshowmoreproducts').remove();
$url = window.location.href;
target = '#my-products-list';
let container = $('
').append(indicator).load($url,{projectpage:nextpage},function (response, status, xhr) {
if (status == "error") {
if (xhr.status == 401) {
if (response) {
var data = jQuery.parseJSON(response);
var redirect = data.login_url;
if (redirect) {
window.location = redirect;
} else {
window.location = "/login";
}
}
} else {
$(target).empty().html('Service is temporarily unavailable. Our engineers are working quickly to resolve this issue. Find out why you may have encountered this error.');
}
}
});
$('#my-products-list').append(container);
}
});
}
}
})();
var AboutMeMyProjectsPagingButton = (function () {
return {
setup: function () {
let indicator = ' ';
$('body').on('click', 'button#btnshowmoreproducts', function (event) {
let nextpage = $(this).attr('data-page');
$(this).remove();
$url = window.location.href;
target = '#my-products-list';
let container = $('
').append(indicator).load($url,{projectpage:nextpage},function (response, status, xhr) {
if (status == "error") {
if (xhr.status == 401) {
if (response) {
var data = jQuery.parseJSON(response);
var redirect = data.login_url;
if (redirect) {
window.location = redirect;
} else {
window.location = "/login";
}
}
} else {
$(target).empty().html('Service is temporarily unavailable. Our engineers are working quickly to resolve this issue. Find out why you may have encountered this error.');
}
}
});
$('#my-products-list').append(container);
});
}
}
})();
var ProductDetailCommentTooltip = (function () {
return {
setup: function () {
TooltipUser.setup('tooltipuser','right');
}
}
})();
var TooltipUser = (function () {
return {
setup: function (tooltipCls, tooltipSide) {
$('.'+tooltipCls).tooltipster(
{
side: tooltipSide,
theme: ['tooltipster-light', 'tooltipster-light-customized'],
contentCloning: true,
contentAsHTML: true,
interactive: true,
functionBefore: function (instance, helper) {
var origin = $(helper.origin);
var userid = origin.attr('data-user');
if (origin.data('loaded') !== true) {
$.get('/member/' + userid + '/tooltip/', function (data) {
var d = data.data;
var tmp = '';
instance.content(tmp);
origin.data('loaded', true);
});
}
}
}
);
}
}
})();
var TooltipUserPlings = (function () {
return {
setup: function (tooltipCls, tooltipSide) {
$('.'+tooltipCls).tooltipster(
{
side: tooltipSide,
theme: ['tooltipster-light', 'tooltipster-light-customized'],
contentCloning: true,
contentAsHTML: true,
interactive: true,
functionBefore: function (instance, helper) {
var origin = $(helper.origin);
var userid = origin.attr('data-user');
if (origin.data('loaded') !== true) {
$.get('/plings/tooltip/id/'+userid, function (data) {
var tmp = '';
instance.content(tmp);
origin.data('loaded', true);
});
}
}
}
);
}
}
})();
var AboutMePage = (function () {
return {
setup: function (username) {
var t = $(document).prop('title');
var tnew = username + "'s Profile " + t;
$(document).prop('title', tnew);
}
}
})();
var InitActiveHashTab = (function () {
return {
setup: function () {
var activeTab = document.location.hash;
if($('a[href="'+ activeTab +'"]'))
{
$('a[href="'+ activeTab +'"]').tab('show');
}
}
}
})();
var TagingProduct = (function () {
return {
setup: function () {
$('input[name=tagsuser]')
.tagify({
whitelist: ['good', 'great'],
autocomplete:true
})
.on('remove', function(e, tagName){
console.log('removed', tagName)
})
.on('add', function(e, tagName){
console.log('added', tagName)
});
}
}
})();
var TagingProductSelect2 = (function () {
return {
setup: function () {
$.fn.select2.amd.require(['select2/selection/search'], function (Search) {
Search.prototype.searchRemoveChoice = function (decorated, item) {
this.trigger('unselect', {
data: item
});
this.$search.val('');
this.handleSearch();
};
}, null, true);
var t = $(".taggingSelect2").select2({
placeholder: "Add Tags here ...", //placeholder
tags: true,
tokenSeparators: [",", " "],
minimumInputLength: 3,
maximumSelectionLength: 5,
width: 'resolve',
ajax: {
url: '/tag/filter',
dataType: 'json',
type: "GET",
delay: 500, // wait 250 milliseconds before triggering the request
processResults: function (data) {
return {
results : data.data.tags
};
}
}
});
// Bind an event
t.on('select2:select', function (e) {
var data = e.params.data;
var projectid = $("#tagsuserselect").attr('data-pid');
var lis = t.parent().find('ul.select2-selection__rendered').find('li.select2-selection__choice').length;
if(lis>5){
t.find("option[value='"+data.id+"']").remove();
return;
}
var regexp=new RegExp("^[0-9A-Za-z_.-]+$");
if(!(regexp.test(data.text))){
t.find("option[value='"+data.id+"']").remove();
alert('Must be letter or number and can include hyphens');
}
if(data.text.length>10){
t.find("option[value='"+data.id+"']").remove();
alert('Max. length 45 chars');
}
});
}
}
})();
var TagingProductDetail = (function () {
return {
setup: function () {
TagingProductDetailSelect2.setup();
$('body').on('click', 'button.topic-tags-btn', function (event) {
$(this).toggleClass('Done');
$('.product_category').find('.usertagslabel').remove();
$('.tagsuserselectpanel').toggle();
if($(this).text() == 'Done'){
$(this).text('Manage tags');
var newhtml = '';
var lis = $('li.select2-selection__choice');
$.each(lis, function( index, value ) {
newhtml=newhtml+''+value.title+' ';
});
$('.product_category').find('.topicslink').html(newhtml);
}else{
$(this).text('Done');
}
});
}
}
})();
var TagingProductDetailSelect2 = (function () {
return {
setup: function () {
$.fn.select2.amd.require(['select2/selection/search'], function (Search) {
Search.prototype.searchRemoveChoice = function (decorated, item) {
this.trigger('unselect', {
data: item
});
this.$search.val('');
this.handleSearch();
};
}, null, true);
var t = $("#tagsuserselect").select2({
placeholder: "Input tags please...", //placeholder
tags: true,
minimumInputLength: 3,
closeOnSelect:true,
maximumSelectionLength: 5,
tokenSeparators: [",", " "],
ajax: {
url: '/tag/filter',
dataType: 'json',
type: "GET",
delay: 500, // wait 250 milliseconds before triggering the request
processResults: function (data) {
return {
results : data.data.tags
};
}
}
});
// Bind an event
t.on('select2:select', function (e) {
var data = e.params.data;
var projectid = $("#tagsuserselect").attr('data-pid');
$.post( "/tag/add", { p: projectid, t: data.id })
.done(function( data ) {
if(data.status=='error'){
$('span.topic-tags-saved').css({ color: "red" }).html(data.message).show().delay(2000).fadeOut();
t.find("option[value='"+data.data.tag+"']").last().remove();
//t.find("option[value="+data.data.tag+"]").last().remove();
}
else
{
$('span.topic-tags-saved').css({ color: "green" }).html(' Saved').show().delay(1000).fadeOut();
}
});
});
// Unbind the event
t.on('select2:unselect', function(e){
var data = e.params.data;
var projectid = $("#tagsuserselect").attr('data-pid');
$.post( "/tag/del", { p: projectid, t: data.id })
.done(function( data ) {
console.log(data);
$('span.topic-tags-saved').css({ color: "green" }).html(' '+data.message).show().delay(1000).fadeOut();
//$('span.topic-tags-saved').show().delay(1000).fadeOut();
});
});
}
}
})();
var TagingLoopMyProducts = (function () {
return {
setup: function () {
TagingLoopMyProductsSelect2.setup();
$('body').on('click', 'button.topic-tags-btn', function (event) {
$(this).toggleClass('Done');
$(this).parent().find('.topicsuser').html('');
$(this).parent().find('.tagsuserselectpanel').toggle();
if($(this).text() == 'Done'){
$(this).text('Manage tags');
var newhtml = '';
var lis = $(this).parent().find('li.select2-selection__choice');
$.each(lis, function( index, value ) {
newhtml=newhtml+''+value.title+' ';
});
$(this).parent().find('.topicsuser').html(newhtml);
}else{
$(this).text('Done');
}
});
}
}
})();
var TagingLoopMyProductsSelect2 = (function () {
return {
setup: function () {
$.fn.select2.amd.require(['select2/selection/search'], function (Search) {
Search.prototype.searchRemoveChoice = function (decorated, item) {
this.trigger('unselect', {
data: item
});
this.$search.val('');
this.handleSearch();
};
}, null, true);
//var t = $("#tagsuserselect").select2({
var t = $(".taggingSelect2").select2({
placeholder: "Input tags please...", //placeholder
tags: true,
minimumInputLength: 3,
closeOnSelect:true,
maximumSelectionLength: 5,
tokenSeparators: [",", " "],
ajax: {
url: '/tag/filter',
dataType: 'json',
type: "GET",
delay: 500, // wait 250 milliseconds before triggering the request
processResults: function (data) {
return {
results : data.data.tags
};
}
}
});
// Bind an event
t.on('select2:select', function (e) {
var data = e.params.data;
var projectid = $(this).attr('id').replace('tagsuserselect','');
//var projectid = $("#tagsuserselect").attr('data-pid');
$.post( "/tag/add", { p: projectid, t: data.id })
.done(function( data ) {
if(data.status=='error'){
$('#topic-tags-saved'+projectid).css({ color: "red" }).html(data.message).show().delay(2000).fadeOut();
t.find("option[value='"+data.data.tag+"']").last().remove();
}else if(data.status=='existing'){
$('#topic-tags-saved'+projectid).css({ color: "red" }).html(data.message).show().delay(2000).fadeOut();
}
else
{
$('#topic-tags-saved'+projectid).css({ color: "green" }).html(' Saved').show().delay(1000).fadeOut();
}
});
});
// Unbind the event
t.on('select2:unselect', function(e){
var data = e.params.data;
//var projectid = $("#tagsuserselect").attr('data-pid');
var projectid = $(this).attr('id').replace('tagsuserselect','');
$.post( "/tag/del", { p: projectid, t: data.id })
.done(function( data ) {
$('#topic-tags-saved'+projectid).css({ color: "green" }).html(' '+data.message).show().delay(1000).fadeOut();
});
});
}
}
})();
var productRatingToggle = (function () {
return {
setup: function () {
$('#showRatingAll').on('click', function () {
$('#ratings-panel').find('.spinning').show();
setTimeout(function () {
$('#ratings-panel').find('.spinning').hide();
}, 500);
$('.btnRateFilter').removeClass('activeRating');
$(this).addClass('activeRating');
$('.productRating-rows').show();
$('.productRating-rows-inactive').show();
});
$('#showRatingActive').on('click', function () {
$('#ratings-panel').find('.spinning').show();
setTimeout(function () {
$('#ratings-panel').find('.spinning').hide();
}, 500);
$('.btnRateFilter').removeClass('activeRating');
$(this).addClass('activeRating');
$('.productRating-rows').show();
$('.productRating-rows-inactive').hide();
});
$('#showRatingUpvotes').on('click', function () {
$('#ratings-panel').find('.spinning').show();
setTimeout(function () {
$('#ratings-panel').find('.spinning').hide();
}, 500);
$('.btnRateFilter').removeClass('activeRating');
$(this).addClass('activeRating');
$('.productRating-rows').show();
$('.clsDownvotes').hide();
$('.productRating-rows-inactive').hide();
});
$('#showRatingDownvotes').on('click', function () {
$('#ratings-panel').find('.spinning').show();
setTimeout(function () {
$('#ratings-panel').find('.spinning').hide();
}, 500);
$('.btnRateFilter').removeClass('activeRating');
$(this).addClass('activeRating');
$('.productRating-rows').show();
$('.productRating-rows-inactive').hide();
$('.clsUpvotes').hide();
});
}
}
})();
var FilterBrowseOriginalFn= (function () {
return {
setup: function () {
$('body').on('click', 'input#filter_browse_original', function (event) {
var checked = $(this).is( ":checked" );
var url = window.location.href;
if(url.indexOf("browse")<0)
{
url = url+'/browse/';
}
if(url.indexOf("filteroriginal")>0)
{
url = url.substring(0,url.indexOf("filteroriginal"));
}
if(checked){
window.location.href = url+'filteroriginal/1';
}else{
window.location.href = url+'filteroriginal/0';
}
});
}
}
})();