#369: use bootstrap for Platforms#show page

This commit is contained in:
Vokhmin Alexey V 2014-10-24 03:27:30 +04:00
parent 344cc19480
commit 1ae14ecd86
11 changed files with 172 additions and 79 deletions

View File

@ -55,6 +55,7 @@ gem "haml-rails", '~> 0.5'
gem 'jquery-rails', '~> 2.3'
gem 'jquery-migrate-rails'
gem 'ruby-haml-js', '~> 0.0.5'
gem 'slim'
gem 'friendly_id', '~> 5.0'
gem 'rack-throttle', '~> 0.3.0'

View File

@ -461,6 +461,9 @@ GEM
thin (~> 1.5.0)
skype (0.2.8)
tmp_cache
slim (2.1.0)
temple (~> 0.6.9)
tilt (>= 1.3.3, < 2.1)
soundmanager-rails (1.0.1)
sprockets (2.11.0)
hike (~> 1.2)
@ -476,6 +479,7 @@ GEM
sqlite3 (>= 1.3.3)
state_machine (1.2.0)
stringex (2.5.2)
temple (0.6.9)
test_after_commit (0.2.5)
activerecord (>= 3.2)
therubyracer (0.12.1)
@ -610,6 +614,7 @@ DEPENDENCIES
shoulda-matchers
sitemap_generator
skype
slim
soundmanager-rails
state_machine (~> 1.2)
test_after_commit

View File

@ -0,0 +1,26 @@
RosaABF.controller 'PlatformSysReposController', ['$scope', '$http', ($scope, $http) ->
$scope.init = (platform_id) ->
path = Routes.platform_path platform_id
$http.get(path, { format: 'json' }).success (res) ->
$scope.list = res.list
$scope.platforms = res.platforms
$scope.arches = res.arches
$scope.platform = res.platforms[0]
$scope.arch = res.arches[0]
$scope.updateCommand()
$scope.updateCommand = ->
if $scope.platform && $scope.arch
$scope.command = $scope.list[$scope.platform][$scope.arch]
else
$scope.command = ''
$scope.selectAll = ($event) ->
target = $($event.currentTarget)
target.select()
false
]

View File

@ -1,6 +1,6 @@
class Platforms::PlatformsController < Platforms::BaseController
include FileStoreHelper
layout 'bootstrap', only: [:index]
layout 'bootstrap'#, only: [:index]
before_filter :authenticate_user!
skip_before_filter :authenticate_user!, only: [:advisories, :members, :show] if APP_CONFIG['anonymous_access']

View File

@ -1,4 +1,5 @@
module PlatformsHelper
def repository_name_postfix(platform)
return "" unless platform
return platform.released ? '/update' : '/release'

View File

@ -142,10 +142,11 @@ class Platform < ActiveRecord::Base
# TODO: rename method or create separate methods for mdv and rhel
# Platform.main.opened.where(distrib_type: APP_CONFIG['distr_types'].first).each do |pl|
arches = Arch.all.to_a
Platform.main.opened.each do |pl|
urpmi_commands[pl.name] = {}
# FIXME should support restricting access to the hidden platform
Arch.all.each do |arch|
arches.each do |arch|
tail = "/#{arch.name}/#{repository_name}/release"
command = add_commands ? "urpmi.addmedia #{name} " : ''
command << "#{APP_CONFIG['downloads_url']}/#{name}/repository/#{pl.name}#{tail}"

View File

@ -1,5 +1,78 @@
/ - content_for :submenu do
/ - act = action_name.to_sym; contr = controller_name.to_sym
/ .left= platform_printed_name(@platform)
/ %nav
/ %ul
- content_for :submenu do
- act = action_name.to_sym; contr = controller_name.to_sym
.left= platform_printed_name(@platform)
%nav
%ul
%nav.navbar.navbar-default{ role: 'navigation' }
.container-fluid
/ Brand and toggle get grouped for better mobile display
.navbar-header
%button.navbar-toggle{ 'data-target' => '#submenu-navbar-collapse', 'data-toggle' => 'collapse', type: 'button' }
%span.sr-only Toggle navigation
%span.icon-bar
%span.icon-bar
%span.icon-bar
.navbar-brand
= link_to platform_printed_name(@platform), @platform
/ Collect the nav links, forms, and other content for toggling
#submenu-navbar-collapse.collapse.navbar-collapse
%ul.nav.navbar-nav.left-border
%li{class: (act == :show && contr == :platforms) ? 'active' : ''}
= link_to t("layout.platforms.about"), platform_path(@platform)
%li{class: (contr == :repositories) ? 'active' : ''}
= link_to t("layout.repositories.list_header"), platform_repositories_path(@platform)
%li{class: (contr == :contents) ? 'active' : ''}
= link_to t('layout.platforms.contents'), platform_contents_path(@platform)
- if can? :show, @platform
%li{class: (act == :index && contr == :maintainers) ? 'active' : nil}
= link_to t("layout.platforms.maintainers"), platform_maintainers_path(@platform)
%li{class: (contr == :mass_builds) ? 'active' : ''}
= link_to t("layout.platforms.mass_build"), platform_mass_builds_path(@platform)
- if can? :read, @platform.products.build
%li{class: (contr == :products) ? 'active' : ''}
= link_to t("layout.products.list_header"), platform_products_path(@platform)
- if can? :advisories, @platform
%li{class: (contr == :platforms and act == :advisories) ? 'active' : ''}
= link_to t("layout.advisories.list_header"), advisories_platform_path(@platform)
- if can? :update, @platform
%li{class: (act == :edit && contr == :platforms) ? 'active' : nil}
= link_to t("platform_menu.settings"), edit_platform_path(@platform)
- if can? :members, @platform
%li{class: (act == :members && contr == :platforms) ? 'active' : nil}
= link_to t("layout.platforms.members"), members_platform_path(@platform)
- if can? :edit, @platform
%li{class: (act == :index && contr == :key_pairs) ? 'active' : ''}
= link_to t("layout.key_pairs.header"), platform_key_pairs_path(@platform)
%li{class: (contr == :tokens) ? 'active' : ''}
= link_to t('layout.tokens.header'), platform_tokens_path(@platform)
/ - if @project.parent
/ %li
/ = link_to project_path(@project.parent), class: 'small' do
/ = fa_icon 'code-fork'
/ = @project.parent.name_with_owner
/ %li{ class: ('active' if act.in?([:show, :edit, :branches, :tags]) && contr.in?([:trees, :blobs]) || contr == :commits) }
/ = link_to t('project_menu.code'), tree_path(@project, treeish)
/ - if @project.is_package and can?(:read, @project => BuildList)
/ %li{ class: ('active' if contr == :build_lists) }
/ = link_to t('project_menu.builds'), project_build_lists_path(@project)
/ - if @project.has_issues
/ %li{ class: ('active' if contr == :issues) }
/ = link_to t('project_menu.tracker', count: @opened_issues_count), project_issues_path(@project)
/ %li{ class: ('active' if contr == :pull_requests) }
/ =link_to t('project_menu.pull_requests', count: @opened_pull_requests_count), project_pull_requests_path(@project)
/ - if @project.has_wiki
/ %li{ class: ('active' if contr == :wiki) }
/ = link_to t('project_menu.wiki'), project_wiki_index_path(@project)
/ %li=# link_to t('project_menu.readme'), '#' #pending
/ - if can? :update, @project
/ %li{ class: ('active' if act == :edit && contr == :projects) }
/ = link_to t('project_menu.settings'), edit_project_path(@project)
/ / /.navbar-collapse
/ / /.container-fluid

View File

@ -1,37 +0,0 @@
- platforms = Platform.main.opened.where(distrib_type: APP_CONFIG['distr_types'].first).order('name ASC')
- if platforms.count > 0
.command_select
%h3= t("layout.platforms.sys_repos_header")
.leftlist= label_tag :platform, t("layout.platforms.target_platform")
.rightlist= select_tag :platform, options_from_collection_for_select(platforms, :name, :name, platforms.first.id)
.both
- arches = Arch.order('name ASC')
.leftlist= label_tag :arch, t("layout.platforms.target_architecture")
.rightlist= select_tag :arch, options_from_collection_for_select(arches, :name, :name, arches.first.id)
.both
.rightlist
%textarea{id: 'command_string', readonly: 'readonly'}
.both
:javascript
$(document).ready(function(){
var path_getter = function() {
var list = #{@platform.urpmi_list(request.host).to_json};
var $platform = $("select#platform");
var $arch = $("select#arch");
$('#command_string').val(list[$platform.val()][$arch.val()]);
// alert('hello');
}
$("select#platform").on('change', path_getter);
$("select#arch").on('change', path_getter);
$("textarea#command_string").on('click', function() {
this.select();
});
path_getter();
});

View File

@ -1,37 +0,0 @@
-set_meta_tags title: title_object(@platform)
= render 'submenu'
= render 'sidebar'
%h3.fix
= t 'layout.platforms.about'
= link_to @platform.name, platform_contents_path(@platform)
%p= @platform.description
%table.tablesorter.unbordered
- if @platform.parent
%tr
%td
%b= "#{t("activerecord.attributes.platform.parent")}:"
%td= link_to @platform.parent.description, platform_path(@platform.parent)
%tr
%td
%b= "#{t('layout.platforms.owner')}:"
%td= link_to @platform.owner.try(:name), url_for(@platform.owner)
%tr
%td
%b= "#{t('layout.platforms.visibility')}:"
%td= t("layout.visibilities.#{@platform.visibility}")
%tr
%td
%b= "#{t('layout.platforms.platform_type')}:"
%td= @platform.platform_type
%tr
%td
%b= "#{t('layout.platforms.distrib_type')}:"
%td= @platform.distrib_type
.buttons_block
= link_to I18n.t("layout.platforms.clone"), clone_platform_path(@platform), class: "button left_floated" if can? :clone, @platform
= render 'connection_info' if @platform.platform_type == 'personal' and @platform.visibility == 'open'

View File

@ -0,0 +1,54 @@
-set_meta_tags title: title_object(@platform)
= render 'submenu'
/ = render 'sidebar'
.container
.row
.col-md-6
h3
= t('layout.platforms.about')
| &nbsp;
= link_to @platform.name, platform_contents_path(@platform)
dl.dl-horizontal
dt= t('activerecord.attributes.platform.description')
dd= @platform.description
- if @platform.parent
dt= t('activerecord.attributes.platform.parent')
dd= link_to @platform.parent.description, platform_path(@platform.parent)
dt= t('layout.platforms.owner')
dd= link_to @platform.owner.try(:name), url_for(@platform.owner)
dt= t('layout.platforms.visibility')
dd= t("layout.visibilities.#{@platform.visibility}")
dt= t('layout.platforms.platform_type')
dd= @platform.platform_type
dt= t('layout.platforms.distrib_type')
dd= @platform.distrib_type
- if can? :clone, @platform
dt
dd
a.btn.btn-primary href=clone_platform_path(@platform)
= t('layout.platforms.clone')
- if @platform.platform_type == 'personal' and @platform.visibility == 'open'
.col-md-6 ng-controller='PlatformSysReposController' ng-init="init(#{@platform.id})"
h3= t('layout.platforms.sys_repos_header')
dl.dl-horizontal
dt= t('layout.platforms.target_platform')
dd
select ng-model='platform' ng-change='updateCommand()'
option ng-repeat='platform in platforms' ng-value='platform'
| {{ platform }}
dt= t('layout.platforms.target_architecture')
dd
select ng-model='arch' ng-change='updateCommand()'
option ng-repeat='arch in arches' ng-value='arch'
| {{ arch }}
br
textarea.form-control readonly='readonly' ng-model='command' rows=3 ng-click='selectAll($event)'

View File

@ -0,0 +1,6 @@
platforms = Platform.main.opened.
where(distrib_type: APP_CONFIG['distr_types'].first).order('name ASC')
json.list @platform.urpmi_list(request.host)
json.platforms platforms.pluck(:name)
json.arches Arch.order('name ASC').pluck(:name)