From 0395b5cb8f7b9a73de6e987dc4969c4db7b64a3e Mon Sep 17 00:00:00 2001 From: Wedge Date: Thu, 16 Jun 2016 15:11:08 +0300 Subject: [PATCH] Various fixes --- .../angularjs/controllers/platforms.js | 9 - .../controllers/project_info_controller.js | 25 - .../controllers/projects_controller.js | 9 +- .../repository_projects_controller.js.coffee | 1 - .../angularjs/services/platforms_service.js | 11 - .../services/project_info_service.js | 11 - .../services/project_select_service.js | 10 - .../javascripts/lib/bootstrap-typeahead.js | 500 ------------------ .../lib/custom-bootstrap-typeahead.js.coffee | 18 - .../javascripts/lib/jquery.placeholder.js | 106 ---- .../platforms/mass_builds_controller.rb | 1 - .../platforms/platforms_controller.rb | 14 +- .../platforms/repositories_controller.rb | 9 +- .../projects/projects_controller.rb | 30 -- app/helpers/datatable_helper.rb | 14 - app/helpers/repositories_helper.rb | 3 - app/views/contacts/new.html.slim | 4 - app/views/pages/_tos_sidebar.html.haml | 10 - app/views/pages/tos.html.haml | 203 ------- app/views/platforms/base/_submenu.html.slim | 4 +- app/views/platforms/platforms/index.html.slim | 15 +- app/views/platforms/platforms/show.html.slim | 55 +- .../product_build_lists/index.html.slim | 4 - .../platforms/repositories/index.html.slim | 14 - .../projects/project_info.json.jbuilder | 7 - app/views/statistics/_filter.html.slim | 2 +- config/locales/en.yml | 251 +++------ config/locales/ru.yml | 250 +++------ config/routes.rb | 3 +- 29 files changed, 182 insertions(+), 1411 deletions(-) delete mode 100644 app/assets/javascripts/angularjs/controllers/platforms.js delete mode 100644 app/assets/javascripts/angularjs/controllers/project_info_controller.js delete mode 100644 app/assets/javascripts/angularjs/services/platforms_service.js delete mode 100644 app/assets/javascripts/angularjs/services/project_info_service.js delete mode 100644 app/assets/javascripts/angularjs/services/project_select_service.js delete mode 100644 app/assets/javascripts/lib/bootstrap-typeahead.js delete mode 100644 app/assets/javascripts/lib/custom-bootstrap-typeahead.js.coffee delete mode 100644 app/assets/javascripts/lib/jquery.placeholder.js delete mode 100644 app/helpers/datatable_helper.rb delete mode 100644 app/helpers/repositories_helper.rb delete mode 100644 app/views/pages/_tos_sidebar.html.haml delete mode 100644 app/views/pages/tos.html.haml delete mode 100644 app/views/platforms/repositories/index.html.slim delete mode 100644 app/views/projects/projects/project_info.json.jbuilder diff --git a/app/assets/javascripts/angularjs/controllers/platforms.js b/app/assets/javascripts/angularjs/controllers/platforms.js deleted file mode 100644 index e045c3bb2..000000000 --- a/app/assets/javascripts/angularjs/controllers/platforms.js +++ /dev/null @@ -1,9 +0,0 @@ -RosaABF.controller('PlatformsController', ['$scope', 'PlatformsService', function($scope, PlatformsService) { - $scope.platforms = null; - - $scope.requesting = true; - PlatformsService.getPlatforms().then(function(platforms) { - $scope.requesting = false; - $scope.platforms = platforms; - }); -}]); diff --git a/app/assets/javascripts/angularjs/controllers/project_info_controller.js b/app/assets/javascripts/angularjs/controllers/project_info_controller.js deleted file mode 100644 index 34793b1cf..000000000 --- a/app/assets/javascripts/angularjs/controllers/project_info_controller.js +++ /dev/null @@ -1,25 +0,0 @@ -RosaABF.controller('ProjectInfoController', ['$scope', 'ProjectInfoService', 'ProjectSelectService', -function($scope, ProjectInfoService, ProjectSelectService) { - $scope.widget_title = ""; - $scope.$watch(function() { - return ProjectSelectService.load_project_info; - }, function() { - var project = ProjectSelectService.load_project_info; - if(project) { - $scope.requesting = true; - ProjectSelectService.disable_pi = true; - ProjectInfoService.getProjectInfo(project).then(function(res) { - $scope.project = project; - $scope.project_info = res; - $scope.requesting = false; - $scope.widget_title = " | " + project; - ProjectSelectService.disable_pi = false; - }); - } - else { - $scope.project_info = null; - $scope.project = ""; - $scope.widget_title = ""; - } - }); -}]); diff --git a/app/assets/javascripts/angularjs/controllers/projects_controller.js b/app/assets/javascripts/angularjs/controllers/projects_controller.js index d6653713b..ebe070a2e 100644 --- a/app/assets/javascripts/angularjs/controllers/projects_controller.js +++ b/app/assets/javascripts/angularjs/controllers/projects_controller.js @@ -1,7 +1,6 @@ -RosaABF.controller('ProjectsController', ['$scope', 'ProjectsService', 'ProjectSelectService', -function($scope, ProjectsService, ProjectSelectService) { +RosaABF.controller('ProjectsController', ['$scope', 'ProjectsService', +function($scope, ProjectsService) { $scope.projects = null; - $scope.ProjectSelectService = ProjectSelectService; $scope.search = ""; var promiseResolve = function(projects) { @@ -15,10 +14,6 @@ function($scope, ProjectsService, ProjectSelectService) { ProjectsService.getProjects(search).then(promiseResolve); } - $scope.selectProject = function(project) { - ProjectSelectService.project = project; - } - $scope.requesting = true; ProjectsService.getProjects().then(promiseResolve); }]); \ No newline at end of file diff --git a/app/assets/javascripts/angularjs/platforms/repository_projects_controller.js.coffee b/app/assets/javascripts/angularjs/platforms/repository_projects_controller.js.coffee index 48603e354..e8c208d5b 100644 --- a/app/assets/javascripts/angularjs/platforms/repository_projects_controller.js.coffee +++ b/app/assets/javascripts/angularjs/platforms/repository_projects_controller.js.coffee @@ -23,7 +23,6 @@ RosaABF.controller 'RepositoryProjectsController', owner_name: $scope.owner_name project_name: $scope.project_name page: $scope.page - sSortDir_0: 'asc' format: 'json' path = Routes.projects_list_platform_repository_path $scope.platform_id, $scope.repository_id diff --git a/app/assets/javascripts/angularjs/services/platforms_service.js b/app/assets/javascripts/angularjs/services/platforms_service.js deleted file mode 100644 index 937120a8f..000000000 --- a/app/assets/javascripts/angularjs/services/platforms_service.js +++ /dev/null @@ -1,11 +0,0 @@ -angular.module("RosaABF").factory('PlatformsService', ["$http", function($http) { - var PlatformsService = {}; - - PlatformsService.getPlatforms = function() { - return $http.get(Routes.platforms_path({ format: 'json' })).then(function(res) { - return res.data.platforms; - }); - } - - return PlatformsService; -}]); \ No newline at end of file diff --git a/app/assets/javascripts/angularjs/services/project_info_service.js b/app/assets/javascripts/angularjs/services/project_info_service.js deleted file mode 100644 index 7cef8a85f..000000000 --- a/app/assets/javascripts/angularjs/services/project_info_service.js +++ /dev/null @@ -1,11 +0,0 @@ -angular.module("RosaABF").factory('ProjectInfoService', ["$http", function($http) { - var ProjectInfoService = {}; - - ProjectInfoService.getProjectInfo = function(name_with_owner) { - return $http.get(Routes.project_info_path(name_with_owner, { format: 'json' })).then(function(res) { - return res.data.project_info; - }); - } - - return ProjectInfoService; -}]); \ No newline at end of file diff --git a/app/assets/javascripts/angularjs/services/project_select_service.js b/app/assets/javascripts/angularjs/services/project_select_service.js deleted file mode 100644 index 921ff1d4d..000000000 --- a/app/assets/javascripts/angularjs/services/project_select_service.js +++ /dev/null @@ -1,10 +0,0 @@ -angular.module("RosaABF").factory('ProjectSelectService', function() { - return { - project: "", - disable_bl: false, - disable_pi: false, - disable: function() { - return this.disable_bl || this.disable_pi; - } - }; -}); \ No newline at end of file diff --git a/app/assets/javascripts/lib/bootstrap-typeahead.js b/app/assets/javascripts/lib/bootstrap-typeahead.js deleted file mode 100644 index b95821f7f..000000000 --- a/app/assets/javascripts/lib/bootstrap-typeahead.js +++ /dev/null @@ -1,500 +0,0 @@ -/*! - * bootstrap-typeahead.js v0.0.3 (http://www.upbootstrap.com) - * Copyright 2012-2014 Twitter Inc. - * Licensed under MIT (https://github.com/biggora/bootstrap-ajax-typeahead/blob/master/LICENSE) - * See Demo: http://plugins.upbootstrap.com/bootstrap-ajax-typeahead - * Updated: 2014-02-09 02:4:38 - * - * Modifications by Paul Warelis and Alexey Gordeyev - */ -!function($) { - - "use strict"; // jshint ;_; - - /* TYPEAHEAD PUBLIC CLASS DEFINITION - * ================================= */ - - var Typeahead = function(element, options) { - - //deal with scrollBar - var defaultOptions=$.fn.typeahead.defaults; - if(options.scrollBar){ - options.items=100; - options.menu=''; - } - - var that = this; - that.$element = $(element); - that.options = $.extend({}, $.fn.typeahead.defaults, options); - that.$menu = $(that.options.menu).insertAfter(that.$element); - - // Method overrides - that.eventSupported = that.options.eventSupported || that.eventSupported; - that.grepper = that.options.grepper || that.grepper; - that.highlighter = that.options.highlighter || that.highlighter; - that.lookup = that.options.lookup || that.lookup; - that.matcher = that.options.matcher || that.matcher; - that.render = that.options.render || that.render; - that.onSelect = that.options.onSelect || null; - that.sorter = that.options.sorter || that.sorter; - that.source = that.options.source || that.source; - that.displayField = that.options.displayField || that.displayField; - that.valueField = that.options.valueField || that.valueField; - - if (that.options.ajax) { - var ajax = that.options.ajax; - - if (typeof ajax === 'string') { - that.ajax = $.extend({}, $.fn.typeahead.defaults.ajax, { - url: ajax - }); - } else { - if (typeof ajax.displayField === 'string') { - that.displayField = that.options.displayField = ajax.displayField; - } - if (typeof ajax.valueField === 'string') { - that.valueField = that.options.valueField = ajax.valueField; - } - - that.ajax = $.extend({}, $.fn.typeahead.defaults.ajax, ajax); - } - - if (!that.ajax.url) { - that.ajax = null; - } - that.query = ""; - } else { - that.source = that.options.source; - that.ajax = null; - } - that.shown = false; - that.listen(); - }; - - Typeahead.prototype = { - constructor: Typeahead, - //============================================================================================================= - // Utils - // Check if an event is supported by the browser eg. 'keypress' - // * This was included to handle the "exhaustive deprecation" of jQuery.browser in jQuery 1.8 - //============================================================================================================= - eventSupported: function(eventName) { - var isSupported = (eventName in this.$element); - - if (!isSupported) { - this.$element.setAttribute(eventName, 'return;'); - isSupported = typeof this.$element[eventName] === 'function'; - } - - return isSupported; - }, - select: function() { - var $selectedItem = this.$menu.find('.active'); - var value = $selectedItem.attr('data-value'); - var text = this.$menu.find('.active a').text(); - - if (this.options.onSelect) { - this.options.onSelect({ - value: value, - text: text - }); - } - this.$element - .val(this.updater(text)) - .change(); - return this.hide(); - }, - updater: function(item) { - return item; - }, - show: function() { - var pos = $.extend({}, this.$element.position(), { - height: this.$element[0].offsetHeight - }); - - this.$menu.css({ - top: pos.top + pos.height, - left: pos.left - }); - - this.$menu.show(); - this.shown = true; - return this; - }, - hide: function() { - this.$menu.hide(); - this.shown = false; - return this; - }, - ajaxLookup: function() { - - var query = $.trim(this.$element.val()); - - if (query === this.query) { - return this; - } - - // Query changed - this.query = query; - - // Cancel last timer if set - if (this.ajax.timerId) { - clearTimeout(this.ajax.timerId); - this.ajax.timerId = null; - } - - if (!query || query.length < this.ajax.triggerLength) { - // cancel the ajax callback if in progress - if (this.ajax.xhr) { - this.ajax.xhr.abort(); - this.ajax.xhr = null; - this.ajaxToggleLoadClass(false); - } - return this.shown ? this.hide() : this; - } - - function execute() { - this.ajaxToggleLoadClass(true); - - // Cancel last call if already in progress - if (this.ajax.xhr) - this.ajax.xhr.abort(); - - var params = this.ajax.preDispatch ? this.ajax.preDispatch(query) : { - query: query - }; - this.ajax.xhr = $.ajax({ - url: this.ajax.url, - data: params, - success: $.proxy(this.ajaxSource, this), - type: this.ajax.method || 'get', - dataType: 'json' - }); - this.ajax.timerId = null; - } - - // Query is good to send, set a timer - this.ajax.timerId = setTimeout($.proxy(execute, this), this.ajax.timeout); - - return this; - }, - ajaxSource: function(data) { - this.ajaxToggleLoadClass(false); - var that = this, items; - if (!that.ajax.xhr) - return; - if (that.ajax.preProcess) { - data = that.ajax.preProcess(data); - } - // Save for selection retreival - that.ajax.data = data; - - // Manipulate objects - items = that.grepper(that.ajax.data) || []; - if (!items.length) { - return that.shown ? that.hide() : that; - } - - that.ajax.xhr = null; - return that.render(items.slice(0, that.options.items)).show(); - }, - ajaxToggleLoadClass: function(enable) { - if (!this.ajax.loadingClass) - return; - this.$element.toggleClass(this.ajax.loadingClass, enable); - }, - lookup: function(event) { - var that = this, items; - - if (that.ajax) { - that.ajaxer(); - } - else { - that.query = that.$element.val(); - - if (!that.query) { - return that.shown ? that.hide() : that; - } - - items = that.grepper(that.source); - - if (!items || !items.length) { - return that.shown ? that.hide() : that; - } - - return that.render(items.slice(0, that.options.items)).show(); - } - }, - matcher: function(item) { - return ~item.toLowerCase().indexOf(this.query.toLowerCase()); - }, - sorter: function(items) { - if (!this.options.ajax) { - var beginswith = [], - caseSensitive = [], - caseInsensitive = [], - item; - - while (item = items.shift()) { - if (!item.toLowerCase().indexOf(this.query.toLowerCase())) - beginswith.push(item); - else if (~item.indexOf(this.query)) - caseSensitive.push(item); - else - caseInsensitive.push(item); - } - - return beginswith.concat(caseSensitive, caseInsensitive); - } else { - return items; - } - }, - highlighter: function(item) { - var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&'); - return item.replace(new RegExp('(' + query + ')', 'ig'), function($1, match) { - return '' + match + ''; - }); - }, - render: function(items) { - var that = this, display, isString = typeof that.options.displayField === 'string'; - - items = $(items).map(function(i, item) { - if (typeof item === 'object') { - display = isString ? item[that.options.displayField] : that.options.displayField(item); - i = $(that.options.item).attr('data-value', item[that.options.valueField]); - } else { - display = item; - i = $(that.options.item).attr('data-value', item); - } - i.find('a').html(that.highlighter(display)); - return i[0]; - }); - - items.first().addClass('active'); - this.$menu.html(items); - return this; - }, - //------------------------------------------------------------------ - // Filters relevent results - // - grepper: function(data) { - var that = this, items, display, isString = typeof that.options.displayField === 'string'; - - if (isString && data && data.length) { - if (data[0].hasOwnProperty(that.options.displayField)) { - items = $.grep(data, function(item) { - display = isString ? item[that.options.displayField] : that.options.displayField(item); - return that.matcher(display); - }); - } else if (typeof data[0] === 'string') { - items = $.grep(data, function(item) { - return that.matcher(item); - }); - } else { - return null; - } - } else { - return null; - } - return this.sorter(items); - }, - next: function(event) { - var active = this.$menu.find('.active').removeClass('active'), - next = active.next(); - - if (!next.length) { - next = $(this.$menu.find('li')[0]); - } - - if(this.options.scrollBar){ - var index=this.$menu.children("li").index(next); - if(index%8==0){ - this.$menu.scrollTop(index*26); - } - } - - next.addClass('active'); - }, - prev: function(event) { - var active = this.$menu.find('.active').removeClass('active'), - prev = active.prev(); - - if (!prev.length) { - prev = this.$menu.find('li').last(); - } - - if(this.options.scrollBar){ - - var $li=this.$menu.children("li"); - var total=$li.length-1; - var index=$li.index(prev); - - if((total-index)%8==0){ - this.$menu.scrollTop((index-7)*26); - } - - } - - prev.addClass('active'); - - }, - listen: function() { - this.$element - .on('focus', $.proxy(this.focus, this)) - .on('blur', $.proxy(this.blur, this)) - .on('keypress', $.proxy(this.keypress, this)) - .on('keyup', $.proxy(this.keyup, this)); - - if (this.eventSupported('keydown')) { - this.$element.on('keydown', $.proxy(this.keydown, this)) - } - - this.$menu - .on('click', $.proxy(this.click, this)) - .on('mouseenter', 'li', $.proxy(this.mouseenter, this)) - .on('mouseleave', 'li', $.proxy(this.mouseleave, this)) - }, - move: function(e) { - if (!this.shown) - return - - switch (e.keyCode) { - case 9: // tab - case 13: // enter - case 27: // escape - e.preventDefault(); - break - - case 38: // up arrow - e.preventDefault() - this.prev() - break - - case 40: // down arrow - e.preventDefault() - this.next() - break - } - - e.stopPropagation(); - }, - keydown: function(e) { - this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40, 38, 9, 13, 27]) - this.move(e) - }, - keypress: function(e) { - if (this.suppressKeyPressRepeat) - return - this.move(e) - }, - keyup: function(e) { - switch (e.keyCode) { - case 40: // down arrow - case 38: // up arrow - case 16: // shift - case 17: // ctrl - case 18: // alt - break - - case 9: // tab - case 13: // enter - if (!this.shown) - return - this.select() - break - - case 27: // escape - if (!this.shown) - return - this.hide() - break - - default: - if (this.ajax) - this.ajaxLookup() - else - this.lookup() - } - - e.stopPropagation() - e.preventDefault() - }, - focus: function(e) { - this.focused = true - }, - blur: function(e) { - this.focused = false - if (!this.mousedover && this.shown) - this.hide() - }, - click: function(e) { - e.stopPropagation() - e.preventDefault() - this.select() - this.$element.focus() - }, - mouseenter: function(e) { - this.mousedover = true - this.$menu.find('.active').removeClass('active') - $(e.currentTarget).addClass('active') - }, - mouseleave: function(e) { - this.mousedover = false - if (!this.focused && this.shown) - this.hide() - } - }; - - - /* TYPEAHEAD PLUGIN DEFINITION - * =========================== */ - - $.fn.typeahead = function(option) { - return this.each(function() { - var $this = $(this), - data = $this.data('typeahead'), - options = typeof option === 'object' && option; - if (!data) - $this.data('typeahead', (data = new Typeahead(this, options))); - if (typeof option === 'string') - data[option](); - }); - }; - - $.fn.typeahead.defaults = { - source: [], - items: 8, - menu: '', - item: '
  • ', - displayField: 'name', - scrollBar:false, - valueField: 'id', - onSelect: function() { - }, - ajax: { - url: null, - timeout: 300, - method: 'get', - triggerLength: 1, - loadingClass: null, - preDispatch: null, - preProcess: null - } - }; - - $.fn.typeahead.Constructor = Typeahead; - - /* TYPEAHEAD DATA-API - * ================== */ - - $(function() { - $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function(e) { - var $this = $(this); - if ($this.data('typeahead')) - return; - e.preventDefault(); - $this.typeahead($this.data()); - }); - }); - -}(window.jQuery); \ No newline at end of file diff --git a/app/assets/javascripts/lib/custom-bootstrap-typeahead.js.coffee b/app/assets/javascripts/lib/custom-bootstrap-typeahead.js.coffee deleted file mode 100644 index f852cf436..000000000 --- a/app/assets/javascripts/lib/custom-bootstrap-typeahead.js.coffee +++ /dev/null @@ -1,18 +0,0 @@ -_.each $('input.typeahead'), (item) -> - item = $(item) - triggerLength = 1 - - if item.data('id') - onSelect = (i) -> - $(item.data('id')).val i.value - - if item.attr('id') is 'to_project' - onSelect = (data) -> - pullUpdateToProject(data) - triggerLength = 3 - - item.typeahead - ajax: - url: item.data('ajax') - triggerLength: triggerLength - onSelect: onSelect diff --git a/app/assets/javascripts/lib/jquery.placeholder.js b/app/assets/javascripts/lib/jquery.placeholder.js deleted file mode 100644 index cb4a2f42a..000000000 --- a/app/assets/javascripts/lib/jquery.placeholder.js +++ /dev/null @@ -1,106 +0,0 @@ -/* -* Placeholder plugin for jQuery -* --- -* Copyright 2010, Daniel Stocks (http://webcloud.se) -* Released under the MIT, BSD, and GPL Licenses. -*/ -(function($) { - function Placeholder(input) { - this.input = input; - if (input.attr('type') == 'password') { - this.handlePassword(); - } - // Prevent placeholder values from submitting - $(input[0].form).submit(function() { - if (input.hasClass('placeholder') && input[0].value == input.attr('placeholder')) { - input[0].value = ''; - } - }); - } - Placeholder.prototype = { - show : function(loading) { - // FF and IE saves values when you refresh the page. If the user refreshes the page with - // the placeholders showing they will be the default values and the input fields won't be empty. - if (this.input[0].value === '' || (loading && this.valueIsPlaceholder())) { - if (this.isPassword) { - try { - this.input[0].setAttribute('type', 'text'); - } catch (e) { - this.input.before(this.fakePassword.show()).hide(); - } - } - this.input.addClass('placeholder'); - this.input[0].value = this.input.attr('placeholder'); - } - }, - hide : function() { - if (this.valueIsPlaceholder() && this.input.hasClass('placeholder')) { - this.input.removeClass('placeholder'); - this.input[0].value = ''; - if (this.isPassword) { - try { - this.input[0].setAttribute('type', 'password'); - } catch (e) { } - // Restore focus for Opera and IE - this.input.show(); - this.input[0].focus(); - } - } - }, - valueIsPlaceholder : function() { - return this.input[0].value == this.input.attr('placeholder'); - }, - handlePassword: function() { - var input = this.input; - input.attr('realType', 'password'); - this.isPassword = true; - // IE < 9 doesn't allow changing the type of password inputs - if ($.browser.msie && input[0].outerHTML) { - var fakeHTML = $(input[0].outerHTML.replace(/type=(['"])?password\1/gi, 'type=$1text$1')); - this.fakePassword = fakeHTML.val(input.attr('placeholder')).addClass('placeholder').focus(function() { - input.trigger('focus'); - $(this).hide(); - }); - $(input[0].form).submit(function() { - fakeHTML.remove(); - input.show() - }); - } - } - }; - var NATIVE_SUPPORT = !!("placeholder" in document.createElement( "input" )); - $.fn.placeholder = function() { - return NATIVE_SUPPORT ? this : this.each(function() { - var input = $(this); - var placeholder = new Placeholder(input); - placeholder.show(true); - input.focus(function() { - placeholder.hide(); - }); - input.blur(function() { - placeholder.show(false); - }); - - // On page refresh, IE doesn't re-populate user input - // until the window.onload event is fired. - if ($.browser.msie) { - $(window).load(function() { - if(input.val()) { - input.removeClass("placeholder"); - } - placeholder.show(true); - }); - // What's even worse, the text cursor disappears - // when tabbing between text inputs, here's a fix - input.focus(function() { - if(this.value == "") { - var range = this.createTextRange(); - range.collapse(true); - range.moveStart('character', 0); - range.select(); - } - }); - } - }); - } -})(jQuery); diff --git a/app/controllers/platforms/mass_builds_controller.rb b/app/controllers/platforms/mass_builds_controller.rb index 250f44c06..2b34ecb20 100644 --- a/app/controllers/platforms/mass_builds_controller.rb +++ b/app/controllers/platforms/mass_builds_controller.rb @@ -1,5 +1,4 @@ class Platforms::MassBuildsController < Platforms::BaseController - include DatatableHelper before_action :authenticate_user! skip_before_action :authenticate_user!, only: [:index, :get_list] if APP_CONFIG['anonymous_access'] diff --git a/app/controllers/platforms/platforms_controller.rb b/app/controllers/platforms/platforms_controller.rb index d3fb34269..1f10727be 100644 --- a/app/controllers/platforms/platforms_controller.rb +++ b/app/controllers/platforms/platforms_controller.rb @@ -6,16 +6,12 @@ class Platforms::PlatformsController < Platforms::BaseController def index authorize :platform - respond_to do |format| - format.html {} - - format.json { - @platforms = PlatformPolicy::Scope.new(current_user, Platform).related - } - end + @platforms = PlatformPolicy::Scope.new(current_user, Platform).related.select(:name, :distrib_type) end def show + @repositories = @platform.repositories + @repositories = Repository.custom_sort(@repositories).paginate(page: current_page) end def new @@ -161,9 +157,9 @@ class Platforms::PlatformsController < Platforms::BaseController subject_params(Platform) end - # Private: before_action hook which loads Platform. def load_platform - authorize @platform = Platform.find_cached(params[:id]), :show? if params[:id] + return unless params[:id] + authorize @platform = Platform.find_cached(params[:id]), :show? end end diff --git a/app/controllers/platforms/repositories_controller.rb b/app/controllers/platforms/repositories_controller.rb index cab89e9c4..6e5d47eef 100644 --- a/app/controllers/platforms/repositories_controller.rb +++ b/app/controllers/platforms/repositories_controller.rb @@ -1,7 +1,5 @@ class Platforms::RepositoriesController < Platforms::BaseController - include DatatableHelper include FileStoreHelper - include RepositoriesHelper include PaginateHelper before_action :authenticate_user! @@ -11,11 +9,6 @@ class Platforms::RepositoriesController < Platforms::BaseController before_action :set_members, only: [:edit, :update] before_action -> { @repository = @platform.repositories.find(params[:id]) if params[:id] } - def index - @repositories = @platform.repositories - @repositories = Repository.custom_sort(@repositories).paginate(page: current_page) - end - def show params[:per_page] = 30 end @@ -128,7 +121,7 @@ class Platforms::RepositoriesController < Platforms::BaseController # @total_projects = @projects.count @projects = @projects.by_owner(params[:owner_name]). - search(params[:project_name]).order("projects.name #{sort_dir}") + search(params[:project_name]).order("projects.name asc") @total_items = @projects.count @projects = @projects.paginate(paginate_params) diff --git a/app/controllers/projects/projects_controller.rb b/app/controllers/projects/projects_controller.rb index 30ff67dd5..c062d27a6 100644 --- a/app/controllers/projects/projects_controller.rb +++ b/app/controllers/projects/projects_controller.rb @@ -1,5 +1,4 @@ class Projects::ProjectsController < Projects::BaseController - include DatatableHelper include ProjectsHelper before_action :authenticate_user! @@ -20,35 +19,6 @@ class Projects::ProjectsController < Projects::BaseController end end - def project_info - authorize @project - respond_to do |format| - format.json { - @github_basic_info = @project.github_data - @commits = [] - @project.github_branches.each do |branch| - last_commit_info = @project.github_last_commit(branch.name)[0] - if last_commit_info - last_commit = { - branch: branch.name, - url: last_commit_info['html_url'], - sha: last_commit_info['sha'], - message: last_commit_info['commit']['message'] - } - if last_commit_info['committer'] - last_commit[:committer_login] = last_commit_info['committer']['login'] - last_commit[:committer_url] = last_commit_info['committer']['html_url'] - else - last_commit[:committer_login] = last_commit_info['commit']['author']['name'] - last_commit[:committer_url] = '' - end - @commits << last_commit - end - end - } - end - end - def dashboard authorize :project end diff --git a/app/helpers/datatable_helper.rb b/app/helpers/datatable_helper.rb deleted file mode 100644 index 6fa5d0055..000000000 --- a/app/helpers/datatable_helper.rb +++ /dev/null @@ -1,14 +0,0 @@ -module DatatableHelper - def page - (params[:iDisplayStart].to_i/(params[:iDisplayLength].present? ? params[:iDisplayLength] : 25).to_i).to_i + 1 - end - - def per_page - params[:iDisplayLength].present? ? params[:iDisplayLength] : 25 - end - - def sort_dir - params[:sSortDir_0] == 'asc' ? 'asc' : 'desc' - end - -end diff --git a/app/helpers/repositories_helper.rb b/app/helpers/repositories_helper.rb deleted file mode 100644 index 1cc9de104..000000000 --- a/app/helpers/repositories_helper.rb +++ /dev/null @@ -1,3 +0,0 @@ -module RepositoriesHelper - -end diff --git a/app/views/contacts/new.html.slim b/app/views/contacts/new.html.slim index 9dd21aa26..4018cc8f0 100644 --- a/app/views/contacts/new.html.slim +++ b/app/views/contacts/new.html.slim @@ -1,8 +1,4 @@ - set_meta_tags title: t('layout.contact.page_header') -- set_meta_tags og: { title: t('layout.contact.page_header'), - description: t('layout.contact.subheader') } -- set_meta_tags twitter: { title: t('layout.contact.page_header'), - description: t('layout.contact.subheader') } .row .col-md-10.col-md-offset-1 diff --git a/app/views/pages/_tos_sidebar.html.haml b/app/views/pages/_tos_sidebar.html.haml deleted file mode 100644 index 009dbf50e..000000000 --- a/app/views/pages/_tos_sidebar.html.haml +++ /dev/null @@ -1,10 +0,0 @@ -- content_for :sidebar do - - .tos_sidebar - %h3= link_to t("layout.tos.begin"), '#' - %ul - %li= link_to " I. #{t("layout.tos.account_terms")}", '#Account_Terms' - %li= link_to " II. #{t("layout.tos.cancellation_and_termination")}", '#Cancellation_and_Termination' - %li= link_to "III. #{t("layout.tos.service_modifications")}", '#Service_Modifications' - %li= link_to " IV. #{t("layout.tos.copyright_and_ownership")}", '#Copyright_and_Ownership' - %li= link_to " V. #{t("layout.tos.general_conditions")}", '#General_Conditions' diff --git a/app/views/pages/tos.html.haml b/app/views/pages/tos.html.haml deleted file mode 100644 index 729adcc48..000000000 --- a/app/views/pages/tos.html.haml +++ /dev/null @@ -1,203 +0,0 @@ -- set_meta_tags og: { title: 'Terms of Service', - description: t('tour.meta_description') } -- set_meta_tags twitter: { title: 'Terms of Service', - description: t('tour.meta_description') } - -- render 'tos_sidebar' - -.tos - %a{name: '#'} - %h1 Terms of Service - - %p - By using the ABF web site ("Service"), you are agreeing to be bound by the - following terms and conditions ("Terms of Service"). IF YOU ARE ENTERING INTO THIS AGREEMENT ON BEHALF OF A COMPANY - OR OTHER LEGAL ENTITY, YOU REPRESENT THAT YOU HAVE THE AUTHORITY TO BIND SUCH - ENTITY, ITS AFFILIATES AND ALL USERS WHO ACCESS OUR SERVICES THROUGH YOUR - ACCOUNT TO THESE TERMS AND CONDITIONS, IN WHICH CASE THE TERMS "YOU" OR "YOUR" - SHALL REFER TO SUCH ENTITY, ITS AFFILIATES AND USERS ASSOCIATED WITH IT. IF - YOU DO NOT HAVE SUCH AUTHORITY, OR IF YOU DO NOT AGREE WITH THESE TERMS AND - CONDITIONS, YOU MUST NOT ACCEPT THIS AGREEMENT AND MAY NOT USE THE SERVICES. - - %p - Openmandriva reserves the right to update and change the Terms of Service from time - to time without notice. Any new features that augment or enhance the current - Service, including the release of new tools and resources, shall be subject - to the Terms of Service. Continued use of the Service after any such changes - shall constitute your consent to such changes. You can review the most current - version of the Terms of Service at any time at: #{ link_to tos_url } - - %p - Violation of any of the terms below will result in the termination of your - Account. While Openmandriva prohibits such conduct and Content on the Service, you - understand and agree that Openmandriva cannot be responsible for the Content posted - on the Service and you nonetheless may be exposed to such materials. You agree - to use the Service at your own risk. - - %a{name: 'Account_Terms'} - %h2 I. Account Terms - - %ol - %li - You must be 13 years or older to use this Service. - %li - You must be a human. Accounts registered by “bots” or other automated - methods are not permitted. - %li - To register in ABF, you should provide your legal full name and a valid email address. - It is also possible to register using Google, Facebook or Github account. - %li - You are responsible for maintaining the security of your account and password. - Openmandriva cannot and will not be liable for any loss or damage from your - failure to comply with this security obligation. - %li - You are responsible for all Content posted and activity that occurs under your - account (even when Content is posted by others who have accounts under - your account). - %li - One person or legal entity may not maintain more than one free account. - %li - You may not use the Service for any illegal or unauthorized purpose. You must - not, in the use of the Service, violate any laws in your jurisdiction - (includingbut not limited to copyright or trademark laws). - - %a{name: 'Cancellation_and_Termination'} - %h2 II. Cancellation and Termination - - %ol - %li - To cancel your account, we need an email request sent from the same address as - the one you are registered with. An email request to cancel your account is necessary. - %li - All the content from your personal platform repositories will be immediately deleted - from the Service upon cancellation. This information cannot be recovered once your - account is canceled. Any content committed by you to repositories of other platforms - will remain in place until owners of that platforms cancel their accounts. - %li - Openmandriva has the right to suspend or terminate your account and refuse any and all current - or future use of the Service, or any other Openmandriva service, for one of the following reasons: - %ul - %li - your bandwidth or server CPU usage significantly exceeds the average bandwidth or - server CPU usage (as determined ABF administrators) of other Openmandriva customers. - %li - content uploaded by you to Openmandriva servers violates the laws of one of the countries where - the storage servers reside. Currently these countries include Russian Federation, - Switzerland and Germany. This list can be extended or changed in future; - if this is the case, we will notify ABF users in our blog in advance. - %li - you violate one of the statements from this Terms of Service. - If any of these events happens, Openmandriva representatives will temporary block your account, - remove forbidden content and contact you to discuss possible ways to resolve the problematic - situation. Once the solution is found, your account will be unblocked. - - %a{name: 'Service_Modifications'} - %h2 III. Modifications to the Service and Conditions - - %ol - %li - Openmandriva reserves the right at any time and from time to time to modify or discontinue, - temporarily or permanently, the Service (or any part thereof) with or without notice. - %li - Conditions of all Services are subject to change upon 30 days notice from us. - Such notice may be provided at any time by posting the changes to the Service Site - (#{ link_to root_url[0..-2], root_url }) - %li - Openmandriva shall not be liable to you or to any third party for any modification, suspension - or discontinuance of the Service. - - %a{name: 'Copyright_and_Ownership'} - %h2 IV. Copyright and Content Ownership - - %ol - %li - We claim no intellectual property rights over the material you provide to the - Service. Your profile and materials uploaded remain yours. However, by setting - your pages to be viewed publicly, you agree to allow others to view your Content. - By setting your repositories to be viewed publicly, you agree to allow others - to view and fork your repositories. - %li - Openmandriva does not pre-screen Content, but Openmandriva and its designee have the right - (but not the obligation) in their sole discretion to refuse or remove any - Content that is available via the Service. - %li - You shall defend Openmandriva against any claim, demand, suit or proceeding made or - brought against Openmandriva by a third party alleging that Your Content, - or Your use of the Service in violation of this Agreement, infringes or - misappropriates the intellectual property rights of a third party or violates - applicable law, and shall indemnify Openmandriva for any damages finally awarded against, - and for reasonable attorney’s fees incurred by, Openmandriva in connection with any such - claim, demand, suit or proceeding; provided, that Openmandriva (a) promptly gives You - written notice of the claim, demand, suit or proceeding; (b) gives You sole - control of the defense and settlement of the claim, demand, suit or proceeding - (provided that You may not settle any claim, demand, suit or proceeding unless - the settlement unconditionally releases Openmandriva of all liability); and (c) provides - to You all reasonable assistance, at Your expense. - %li - The look and feel of the Service is copyright © - = Date.today.year - Openmandriva Association. All rights reserved. - You may not duplicate, copy, or reuse any portion of the HTML/CSS, Javascript, or - visual design elements or concepts without express written permission from Openmandriva. - - %a{name: 'General_Conditions'} - %h2 V. General Conditions - - %ol - %li - Your use of the Service is at your sole risk. The service is provided on an “as is” - and “as available” basis. - %li - Technical support is only garanteed for paying account holders and is only available - via email. Support is available in English and Russian. - %li - You understand that Openmandriva uses third party vendors and hosting partners to provide - the necessary hardware, software, networking, storage, and related technology - required to run the Service. - %li - We may, but have no obligation to, remove Content and Accounts containing Content - that we determine in our sole discretion are unlawful, offensive, threatening, - libelous, defamatory, pornographic, obscene or otherwise objectionable or violates - any party’s intellectual property or these Terms of Service. - %li - Verbal, physical, written or other abuse (including threats of abuse or retribution) - of any Openmandriva customer, employee, member, or officer will result in immediate account - termination. - %li - You understand that the technical processing and transmission of the Service, - including your Content, may be transfered unencrypted and involve (a) transmissions - over various networks; and (b) changes to conform and adapt to technical requirements - of connecting networks or devices. - %li - You must not upload, post, host, or transmit unsolicited email, SMSs, or “spam” messages. - %li - You must not transmit any worms or viruses or any code of a destructive nature. - %li - Openmandriva does not warrant that (i) the service will meet your specific requirements, - (ii) the service will be uninterrupted, timely, secure, or error-free, (iii) the - results that may be obtained from the use of the service will be accurate or - reliable, (iv) the quality of any products, services, information, or other material - purchased or obtained by you through the service will meet your expectations, and - (v) any errors in the Service will be corrected. - %li - You expressly understand and agree that Openmandriva shall not be liable for any direct, - indirect, incidental, special, consequential or exemplary damages, including but - not limited to, damages for loss of profits, goodwill, use, data or other - intangible losses (even if Openmandriva has been advised of the possibility of such damages), - resulting from: (i) the use or the inability to use the service; (ii) the cost of - procurement of substitute goods and services resulting from any goods, data, - information or services purchased or obtained or messages received or transactions - entered into through or from the service; (iii) unauthorized access to or alteration - of your transmissions or data; (iv) statements or conduct of any third party on the - service; (v) or any other matter relating to the service. - %li - The failure of Openmandriva to exercise or enforce any right or provision of the Terms of - Service shall not constitute a waiver of such right or provision. The Terms of - Service constitutes the entire agreement between you and Openmandriva and govern your use of - the Service, superseding any prior agreements between you and Openmandriva (including, but - not limited to, any prior versions of the Terms of Service). You agree that these - Terms of Service and Your use of the Service are governed under European law. - - %p - Questions about the Terms of Service should be sent to #{ mail_to 'abf@openmandriva.org' } - diff --git a/app/views/platforms/base/_submenu.html.slim b/app/views/platforms/base/_submenu.html.slim index 8180fff81..fc67bb5d9 100644 --- a/app/views/platforms/base/_submenu.html.slim +++ b/app/views/platforms/base/_submenu.html.slim @@ -10,10 +10,8 @@ / Collect the nav links, forms, and other content for toggling ul.nav.navbar-nav.left-border - li class=('active' if act == :show && contr == :platforms) + li class=('active' if act == :show && contr == :platforms || contr == :repositories) = link_to t("layout.platforms.about"), platform_path(@platform) - li class=('active' if contr == :repositories) - = link_to t("layout.repositories.list_header"), platform_repositories_path(@platform) li class=('active' if contr == :contents) = link_to t('layout.platforms.contents'), platform_contents_path(@platform) - if policy(@platform).show? diff --git a/app/views/platforms/platforms/index.html.slim b/app/views/platforms/platforms/index.html.slim index 0fba7cec0..cff7a19c2 100644 --- a/app/views/platforms/platforms/index.html.slim +++ b/app/views/platforms/platforms/index.html.slim @@ -1,5 +1,5 @@ - set_meta_tags title: t('layout.platforms.list_header') -.row.top-space ng-controller='PlatformsController' +.row.top-space .col-md-6.col-md-offset-3 rd-widget rd-widget-header title=(t('layout.platforms.list_header')) @@ -13,9 +13,10 @@ th= t 'activerecord.attributes.platform.name' th= t 'activerecord.attributes.platform.distrib_type' tbody - tr ng-repeat='item in platforms' - td - a ng-href="{{item.link}}" - | {{item.name}} - td - | {{item.distrib_type}} \ No newline at end of file + - @platforms.each do |platform| + tr + td + a href=platform_path(platform.name) + = platform.name + td + = platform.distrib_type \ No newline at end of file diff --git a/app/views/platforms/platforms/show.html.slim b/app/views/platforms/platforms/show.html.slim index 1659669e8..b7df5b05f 100644 --- a/app/views/platforms/platforms/show.html.slim +++ b/app/views/platforms/platforms/show.html.slim @@ -43,26 +43,37 @@ b= t('layout.platforms.distrib_type') td= @platform.distrib_type - - if @platform.platform_type == 'personal' and @platform.visibility == 'open' - .col-md-6 ng-controller='PlatformSysReposController' ng-init="init(#{@platform.id})" - rd-widget - rd-widget-header title=t('layout.platforms.sys_repos_header') - rd-widget-body - .row - .col-md-4 - b= t('layout.platforms.target_platform') - .col-md-8 - select ng-model='platform' ng-change='updateCommand()' - option ng-repeat='platform in platforms' ng-value='platform' - | {{ platform }} + .col-md-6 + rd-widget + rd-widget-header title=t('layout.repositories.list_header') + -if policy(@platform.repositories.build).create? + a.btn.btn-primary.pull-right href=new_platform_repository_path(@platform) + = t("layout.repositories.new") + rd-widget-body class="no-padding" + = render 'platforms/repositories/list', object: @repositories + = will_paginate @repositories - .row - .col-md-4 - b= t('layout.platforms.target_architecture') - .col-md-8 - select ng-model='arch' ng-change='updateCommand()' - option ng-repeat='arch in arches' ng-value='arch' - | {{ arch }} - .row - br - textarea.form-control readonly='readonly' ng-model='command' rows=3 ng-click='selectAll($event)' + - if @platform.platform_type == 'personal' and @platform.visibility == 'open' + .row + .col-md-6 ng-controller='PlatformSysReposController' ng-init="init(#{@platform.id})" + rd-widget + rd-widget-header title=t('layout.platforms.sys_repos_header') + rd-widget-body + .row + .col-md-4 + b= t('layout.platforms.target_platform') + .col-md-8 + select ng-model='platform' ng-change='updateCommand()' + option ng-repeat='platform in platforms' ng-value='platform' + | {{ platform }} + + .row + .col-md-4 + b= t('layout.platforms.target_architecture') + .col-md-8 + select ng-model='arch' ng-change='updateCommand()' + option ng-repeat='arch in arches' ng-value='arch' + | {{ arch }} + .row + br + textarea.form-control readonly='readonly' ng-model='command' rows=3 ng-click='selectAll($event)' diff --git a/app/views/platforms/product_build_lists/index.html.slim b/app/views/platforms/product_build_lists/index.html.slim index c785690af..b057d6ea3 100644 --- a/app/views/platforms/product_build_lists/index.html.slim +++ b/app/views/platforms/product_build_lists/index.html.slim @@ -1,8 +1,4 @@ - set_meta_tags title: t('.title') -- set_meta_tags og: { title: t('.title'), description: t('tour.meta_description') } -- set_meta_tags twitter: { title: t('.title'), description: t('tour.meta_description') } - -/ == render 'projects/build_lists/submenu' .row.top-space .col-md-10.col-md-offset-1 diff --git a/app/views/platforms/repositories/index.html.slim b/app/views/platforms/repositories/index.html.slim deleted file mode 100644 index bf6336295..000000000 --- a/app/views/platforms/repositories/index.html.slim +++ /dev/null @@ -1,14 +0,0 @@ -- title = title_object(@platform) -- set_meta_tags title: [title, t('layout.repositories.list_header')] - -= render 'submenu' if params[:platform_id] -.row - .col-md-6.col-md-offset-3 - rd-widget - rd-widget-header title=t('layout.repositories.list_header') - -if policy(@platform.repositories.build).create? - a.btn.btn-primary.pull-right href=new_platform_repository_path(@platform) - = t("layout.repositories.new") - rd-widget-body class="no-padding" - = render 'list', object: @repositories - = will_paginate @repositories \ No newline at end of file diff --git a/app/views/projects/projects/project_info.json.jbuilder b/app/views/projects/projects/project_info.json.jbuilder deleted file mode 100644 index 8eb028b05..000000000 --- a/app/views/projects/projects/project_info.json.jbuilder +++ /dev/null @@ -1,7 +0,0 @@ -json.project_info do |proj| - proj.(@github_basic_info, :html_url, :description) - - proj.commits @commits do |commit| - proj.(commit, :branch, :url, :sha, :message, :committer_login, :committer_url) - end -end \ No newline at end of file diff --git a/app/views/statistics/_filter.html.slim b/app/views/statistics/_filter.html.slim index cb9d524f5..ff3cea4fa 100644 --- a/app/views/statistics/_filter.html.slim +++ b/app/views/statistics/_filter.html.slim @@ -69,6 +69,6 @@ ng-disabled = 'loading' class = 'form-control typeahead' ] - a href='#' ng-click='update()' + a ng-click='update()' b = t('.refresh') diff --git a/config/locales/en.yml b/config/locales/en.yml index cc552daa4..1796faf4b 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1,193 +1,72 @@ +--- en: - will_paginate: - previous_label: ‹ Previous - next_label: Next › - page_gap: ... - - datatables: - previous_label: ‹ Prev. - next_label: Next › - first_label: « First - last_label: Last » - empty_label: No data accessible - info_label: Records displayed from _START_ to _END_ total _TOTAL_ - info_empty_label: Records displayed from 0 to 0 total 0 - filtered_label: (filtered from _MAX_) - - layout: - logged_in_as: You logged as - logout: Logout - user_list: User list - edit: Edit - show: View - hide: Hide - cancel: Cancel - create: Create - update: Update - delete: Erase - delete_selected: Remove selected - save: Save - saving: Saving - clone: Clone - search_by_name: Filter by name - are_you_sure: "Sure?" - login: Login - or: or - yes_: Yes - no_: No - true_: True - false_: False - publish: Publish - publish_again: Publish again - publish_again_warning: Secondary publication will be able to break relationships in the repository. Be careful! - publish_into_testing: '[testing] Publish' - reject_publish: Reject - add: Add - upload: Upload - not_access: Access denied! - owner: Owner - confirm: Sure? - back: Back - processing: working ... - invalid_content_type: incorrect type - atom_link_tag_title: Private feed for %{nickname} | %{app_name} - preview: Preview - link: Link - noscript_message: You need javascript to properly use this site - - settings: - label: Settings - notifier: Notifier setting - notifiers: - edit_header: Notifier setting - notice_header: You can receive notifies from other collaborators about changes into code of your projects. Notifies will be sent to your email %{email}. - change_email_link: Change email address - code_header: Code - tracker_header: Tracker - build_list_header: Build List - - devise: - shared_links: - sign_in: Sign in - sign_up: Sign up - forgot_password: Forgot your password? - confirm_again: Do not receive the confirmation link? - unlock: Do not receive unlock instructions? - sign_in_through: Sign in by %{provider} - - weekdays: - Monday: Monday - Tuesday: Tuesday - Wednesday: Wednesday - Thursday: Thursday - Friday: Friday - Saturday: Saturday - Sunday: Sunday - - time: - ago: ago - - sessions: - sign_in_header: Sign in - sign_up_with: or sign in with - - collaborators: - back_to_proj: Back to project - edit: Edit list - add: Add/Remove - list: List - edit_roles: Edit roles - roles_header: Roles to - add_role: Add/Remove a role - input_username: Enter an username - input_groupname: Enter a groupname - members: Members - roles: Roles - role_names: - reader: Reader - writer: Writer - admin: Admin - - git: - repositories: - empty: "Repository is empty. You need to wait some time if you have forked project or imported package" - source: Source - commits: Commits - commit_diff_too_big: Sorry, diff too big! - tags: Tags - branches: Branches - project_versions: Versions - - flash: - settings: - saved: Settings saved success - save_error: Setting update error - - subscribe: - saved: Subscription on notifications for this task is created - saved_error: Subscription create error - destroyed: Subscription on notifications for this task is cleaned - commit: - saved: Subscription on notifications for this commit is created - destroyed: Subscription on notifications for this commit is cleaned - - exception_message: Access violation to this page! - - 500_message: Error 500. Something went wrong. We've been notified about this issue and we'll take a look at it shortly. - 404_message: Error 404. Resource not found! - - collaborators: - successfully_added: Member %{uname} successfully added - error_in_adding: Error adding member - successfully_removed: Member %{uname} successfully removed - error_in_removing: Error removing %{uname} member - successfully_updated: Member %{uname} role has been updated - error_in_updating: Error updating role - - successfully_changed: Members list successfully changed - error_in_changing: Members list changing error - member_already_added: Member %s already added - group_already_added: Group already added - wrong_user: "User with nickname '%{uname}' not found!" - - blob: - successfully_updated: "File '%{name}' successfully updated" - updating_error: "Error updating file '%{name}'" - - attributes: - password: Password - password_confirmation: Confirmation - remember_me: Remember - name: Name - parent_platform_id: Parent platform - activerecord: - - errors: - models: - project: - attributes: - base: - can_have_less_or_equal: You cannot have more than %{count} projects. - models: product_build_list: Product build list - - attributes: - arch: - name: Name - created_at: Created - updated_at: Updated - - into: into - from: from - by: by + datatables: + empty_label: No data accessible + filtered_label: "(filtered from _MAX_)" + info_empty_label: Records displayed from 0 to 0 total 0 + info_label: Records displayed from _START_ to _END_ total _TOTAL_ + next_label: Next › + previous_label: "‹ Prev." diff: Diff + flash: + collaborators: + wrong_user: User with nickname '%{uname}' not found! + exception_message: Access violation to this page! + settings: + save_error: Setting update error + saved: Settings saved success + layout: + add: Add + atom_link_tag_title: Private feed for %{nickname} | %{app_name} + cancel: Cancel + clone: Clone + collaborators: + members: Members + role_names: + admin: Admin + reader: Reader + writer: Writer + roles: Roles + confirm: Sure? + create: Create + delete: Erase + devise: + shared_links: + confirm_again: Do not receive the confirmation link? + forgot_password: Forgot your password? + sign_in: Sign in + sign_up: Sign up + unlock: Do not receive unlock instructions? + edit: Edit + false_: false + git: + repositories: + branches: Branches + tags: Tags + logout: Logout + no_: false + noscript_message: You need javascript to properly use this site + or: or + processing: working ... + publish: Publish + publish_again: Publish again + publish_again_warning: Secondary publication will be able to break relationships + in the repository. Be careful! + publish_into_testing: "[testing] Publish" + reject_publish: Reject + save: Save + settings: + label: Settings + notifiers: + build_list_header: Build List + change_email_link: Change email address + notice_header: You can receive notifies from other collaborators about changes + into code of your projects. Notifies will be sent to your email %{email}. + show: View + true_: true + none: None number_rows: Number rows reset: Reset - _on: 'On' - until: Until - none: None - close: Close - - new_feature: '(new!)' diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 544f98f1b..88dce702f 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -1,193 +1,73 @@ +--- ru: - will_paginate: - previous_label: ‹ Предыдущая - next_label: Следующая › - page_gap: ... - + activerecord: + models: + product_build_list: "Сборочный лист продукта" datatables: - previous_label: ‹ Предыдущая - next_label: Следующая › - first_label: « Первая - last_label: Последняя » - empty_label: Нет доступных данных - info_label: Показаны записи с _START_ по _END_ из _TOTAL_ - info_empty_label: Показаны записи с 0 по 0 из 0 - filtered_label: (отфильтровано из _MAX_) - - layout: - logged_in_as: Вы вошли как - logout: Выйти - user_list: Список пользователей - edit: Редактировать - show: Просмотр - hide: Скрыть - cancel: Отмена - create: Создать - update: Обновить - delete: Удалить - delete_selected: Удалить выбранное - save: Сохранить - saving: Сохранение... - clone: Клонировать - search_by_name: Фильтр по имени - are_you_sure: "Вы уверены?" - login: Войти - or: или - yes_: Да - no_: Нет - true_: Да - false_: Нет - publish: Опубликовать - publish_again: Опубликовать снова - publish_again_warning: Повторная публикация может привести к нарушению зависимостей в репозитории. Будьте осторожны! - publish_into_testing: '[testing] Опубликовать' - reject_publish: Отклонить - add: Добавить - upload: Загрузить - not_access: Нет доступа! - owner: Владелец - confirm: Уверены? - back: Назад - processing: Обрабатывается... - invalid_content_type: имеет неверный тип - atom_link_tag_title: Приватная лента для %{nickname} | %{app_name} - preview: Предосмотр - link: Ссылка - noscript_message: Включите javascript для корректной работы сайта - + empty_label: "Нет доступных данных" + filtered_label: "(отфильтровано из _MAX_)" + info_empty_label: "Показаны записи с 0 по 0 из 0" + info_label: "Показаны записи с _START_ по _END_ из _TOTAL_" + next_label: "Следующая ›" + previous_label: "‹ Предыдущая" + diff: "Изменения" + flash: + collaborators: + wrong_user: "Пользователь с ником '%{uname}' не найден." + exception_message: "У Вас нет доступа к этой странице!" settings: - label: 'Настройки' - notifier: Настройки оповещений - notifiers: - edit_header: Настройки оповещений - notice_header: Вы можете получать уведомления об изменениях, которые вносят другие участники, в код ваших программ. Уведомления будут высылаться на указанный вами адрес электронной почты %{email}. - change_email_link: Изменить адрес электронной почты - code_header: Код - tracker_header: Трекер задач - build_list_header: Сборочные задания - + save_error: "При обновлении настроек произошла ошибка" + saved: "Настройки успешно сохранены" + layout: + add: "Добавить" + atom_link_tag_title: "Приватная лента для %{nickname} | %{app_name}" + cancel: "Отмена" + clone: "Клонировать" + collaborators: + members: "Участники" + role_names: + admin: "Админ" + reader: "Читатель" + writer: "Писатель" + roles: "Роли" + confirm: "Уверены?" + create: "Создать" + delete: "Удалить" devise: shared_links: - sign_in: Войти - sign_up: Регистрация - forgot_password: Забыли пароль? - confirm_again: Не получили инструкции по подтверждению? - unlock: Не получили инструкции по разблокировке? - sign_in_through: Войти через %{provider} - - weekdays: - Monday: Понедельник - Tuesday: Вторник - Wednesday: Среда - Thursday: Четверг - Friday: Пятница - Saturday: Субота - Sunday: Воскресенье - - time: - ago: назад - - sessions: - sign_in_header: Вход в систему - sign_up_with: или войти с помощью - - collaborators: - back_to_proj: Вернуться к проекту - edit: Редактировать список - add: Добавить/Удалить - list: Список - edit_roles: Редактировать роли - roles_header: Роли для - add_role: Добавить/Удалить роль - input_username: Введите псевдоним пользователя - input_groupname: Введите псевдоним группы - members: Участники - roles: Роли - role_names: - reader: Читатель - writer: Писатель - admin: Админ - + confirm_again: "Не получили инструкции по подтверждению?" + forgot_password: "Забыли пароль?" + sign_in: "Войти" + sign_up: "Регистрация" + unlock: "Не получили инструкции по разблокировке?" + edit: "Редактировать" + false_: "Нет" git: repositories: - empty: "Репозиторий пуст. Если вы клонировали(Fork) проект или импортировали пакет, данные скоро появятся" - source: Source - commits: Коммиты - commit_diff_too_big: Извините, изменений слишком много! - tags: Теги - branches: Ветки - project_versions: Версии - - flash: + branches: "Ветки" + tags: "Теги" + logout: "Выйти" + no_: "Нет" + noscript_message: "Включите javascript для корректной работы сайта" + or: "или" + processing: "Обрабатывается..." + publish: "Опубликовать" + publish_again: "Опубликовать снова" + publish_again_warning: "Повторная публикация может привести к нарушению зависимостей + в репозитории. Будьте осторожны!" + publish_into_testing: "[testing] Опубликовать" + reject_publish: "Отклонить" + save: "Сохранить" settings: - saved: Настройки успешно сохранены - save_error: При обновлении настроек произошла ошибка - - subscribe: - saved: Вы подписаны на оповещения для этой задачи - saved_error: При создании подписки произошла ошибка - destroyed: Подписка на оповещения для этой задачи убрана - commit: - saved: Вы подписаны на оповещения для этого коммита - destroyed: Подписка на оповещения для этого коммита убрана - - exception_message: У Вас нет доступа к этой странице! - - 500_message: Ошибка 500. Что-то пошло не так. Мы уже в курсе данной проблемы и постараемся поскорее ее решить. - 404_message: Ошибка 404. Страница не найдена! - - collaborators: - successfully_added: Участник %{uname} успешно добавлен - error_in_adding: Ошибка при добавлении участника - successfully_removed: Участник %{uname} успешно удален - error_in_removing: Ошибка при удалении участника %{uname} - successfully_updated: Участнику %{uname} изменена роль - error_in_updating: Ошибка при изменении роли - - successfully_changed: Список участников успешно изменен - error_in_changing: Ошибка изменения списка участников - member_already_added: Участник %s уже добавлен - group_already_added: Группа уже добавлена - wrong_user: "Пользователь с ником '%{uname}' не найден." - - blob: - successfully_updated: "Файл '%{name}' успешно обновлен" - updating_error: "Ошибка обновления файла '%{name}'" - - attributes: - password: Пароль - password_confirmation: Подтверждение - remember_me: Запомнить - name: Название - parent_platform_id: Родительская платформа - - activerecord: - - errors: - models: - project: - attributes: - base: - can_have_less_or_equal: Нельзя иметь больше, чем %{count} проектов. - - models: - product_build_list: Сборочный лист продукта - - attributes: - arch: - name: Название - created_at: Создана - updated_at: Обновлена - - into: в - from: из - by: от - diff: Изменения - number_rows: Количество строк - reset: Сброс - _on: с - until: по - none: Нет - close: Закрыть - - new_feature: '(новинка!)' + label: "Настройки" + notifiers: + build_list_header: "Сборочные задания" + change_email_link: "Изменить адрес электронной почты" + notice_header: "Вы можете получать уведомления об изменениях, которые вносят + другие участники, в код ваших программ. Уведомления будут высылаться на + указанный вами адрес электронной почты %{email}." + show: "Просмотр" + true_: "Да" + none: "Нет" + number_rows: "Количество строк" + reset: "Сброс" diff --git a/config/routes.rb b/config/routes.rb index 606c9a401..50c3aed3b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -168,7 +168,7 @@ Rails.application.routes.draw do end end - resources :repositories do + resources :repositories, only: [:create, :new, :show, :edit] do member do get :manage_projects put :add_project @@ -274,7 +274,6 @@ Rails.application.routes.draw do end # Resource - get '/project_info.:format' => 'projects#project_info', as: :project_info, format: /json/ get '/autocomplete_maintainers' => 'projects#autocomplete_maintainers', as: :autocomplete_maintainers get '/modify' => 'projects#edit', as: :edit_project patch '/' => 'projects#update', as: :project