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