Minor gems update. Apply search design and controller. Add and refactor search scopes. Fix relations. Separate and refactor search translations. Refactor search form. Refs #255
This commit is contained in:
parent
9d8eb8a3f2
commit
d6f9b2c3e9
6
Gemfile
6
Gemfile
|
@ -8,7 +8,7 @@ gem 'redhillonrails_core', :git => 'git://github.com/chipiga/redhillonrails_core
|
|||
# gem 'schema_plus', '~> 0.2.1' # buggy shit!
|
||||
|
||||
gem 'devise', '~> 2.0.4'
|
||||
gem 'omniauth', '~> 1.0.2'
|
||||
gem 'omniauth', '~> 1.0.3'
|
||||
gem 'omniauth-openid', '~> 1.0.1'
|
||||
gem 'cancan', '~> 1.6.7'
|
||||
|
||||
|
@ -36,7 +36,7 @@ gem 'newrelic_rpm', '~> 3.3.2'
|
|||
|
||||
gem 'rails3-jquery-autocomplete', '~> 1.0.6'
|
||||
gem 'will_paginate', '~> 3.0.3'
|
||||
gem 'meta-tags', '~> 1.2.4', :require => 'meta_tags'
|
||||
gem 'meta-tags', '~> 1.2.5', :require => 'meta_tags'
|
||||
gem "haml-rails", '~> 0.3.4'
|
||||
gem 'jquery-rails', '~> 2.0.1'
|
||||
|
||||
|
@ -50,7 +50,7 @@ end
|
|||
|
||||
group :production do
|
||||
gem "airbrake", '~> 3.0.9'
|
||||
gem 'bluepill', '~> 0.0.59', :require => false
|
||||
gem 'bluepill', '~> 0.0.60', :require => false
|
||||
gem 'daemons', '1.1.6' # for DJ
|
||||
end
|
||||
|
||||
|
|
18
Gemfile.lock
18
Gemfile.lock
|
@ -62,7 +62,7 @@ GEM
|
|||
activerecord (>= 2.2.2)
|
||||
arel (3.0.2)
|
||||
bcrypt-ruby (3.0.1)
|
||||
bluepill (0.0.59)
|
||||
bluepill (0.0.60)
|
||||
activesupport (>= 3.0.0)
|
||||
daemons (~> 1.1.4, <= 1.1.6)
|
||||
i18n (>= 0.5.0)
|
||||
|
@ -145,7 +145,7 @@ GEM
|
|||
json (1.6.5)
|
||||
kgio (2.7.2)
|
||||
libv8 (3.3.10.4)
|
||||
mail (2.4.1)
|
||||
mail (2.4.3)
|
||||
i18n (>= 0.4.0)
|
||||
mime-types (~> 1.16)
|
||||
treetop (~> 1.4.8)
|
||||
|
@ -158,7 +158,7 @@ GEM
|
|||
skinny (~> 0.2)
|
||||
sqlite3 (~> 1.3)
|
||||
thin (~> 1.2)
|
||||
meta-tags (1.2.4)
|
||||
meta-tags (1.2.6)
|
||||
actionpack
|
||||
mime-types (1.17.2)
|
||||
multi_json (1.1.0)
|
||||
|
@ -172,7 +172,7 @@ GEM
|
|||
net-ssh (>= 1.99.1)
|
||||
newrelic_rpm (3.3.2)
|
||||
nokogiri (1.5.0)
|
||||
omniauth (1.0.2)
|
||||
omniauth (1.0.3)
|
||||
hashie (~> 1.2)
|
||||
rack
|
||||
omniauth-openid (1.0.1)
|
||||
|
@ -188,7 +188,7 @@ GEM
|
|||
polyglot (0.3.3)
|
||||
posix-spawn (0.3.6)
|
||||
rack (1.4.1)
|
||||
rack-cache (1.1)
|
||||
rack-cache (1.2)
|
||||
rack (>= 0.4)
|
||||
rack-openid (1.3.1)
|
||||
rack (>= 1.1.0)
|
||||
|
@ -275,7 +275,7 @@ GEM
|
|||
treetop (1.4.10)
|
||||
polyglot
|
||||
polyglot (>= 0.3.1)
|
||||
tzinfo (0.3.31)
|
||||
tzinfo (0.3.32)
|
||||
uglifier (1.2.3)
|
||||
execjs (>= 0.3.0)
|
||||
multi_json (>= 1.0.2)
|
||||
|
@ -300,7 +300,7 @@ DEPENDENCIES
|
|||
RedCloth
|
||||
airbrake (~> 3.0.9)
|
||||
ancestry (~> 1.2.4)
|
||||
bluepill (~> 0.0.59)
|
||||
bluepill (~> 0.0.60)
|
||||
cancan (~> 1.6.7)
|
||||
cape
|
||||
capistrano
|
||||
|
@ -320,9 +320,9 @@ DEPENDENCIES
|
|||
hirb
|
||||
jquery-rails (~> 2.0.1)
|
||||
mailcatcher
|
||||
meta-tags (~> 1.2.4)
|
||||
meta-tags (~> 1.2.5)
|
||||
newrelic_rpm (~> 3.3.2)
|
||||
omniauth (~> 1.0.2)
|
||||
omniauth (~> 1.0.3)
|
||||
omniauth-openid (~> 1.0.1)
|
||||
paperclip (~> 2.7.0)
|
||||
pg (~> 0.13.2)
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
jQuery(document).ready(function(){
|
||||
|
||||
//var params = {
|
||||
// changedEl: ".lineForm select",
|
||||
// visRows: 999999,
|
||||
// scrollArrows: false
|
||||
// }
|
||||
//
|
||||
// cuSel(params);
|
||||
var params = {
|
||||
changedEl: ".lineForm select",
|
||||
visRows: 999999,
|
||||
scrollArrows: false
|
||||
}
|
||||
|
||||
cuSel(params);
|
||||
|
||||
});
|
|
@ -372,3 +372,10 @@ div.blame_data tr td.code pre {
|
|||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
// Search
|
||||
p.block { margin-bottom: 10px; clear: both; }
|
||||
table.tablesorter.bmargin5 {
|
||||
th { padding: 5px; }
|
||||
td p.block {margin-bottom: 0px;}
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ class RepositoriesController < ApplicationController
|
|||
|
||||
@projects = Project.joins(owner_subquery).addable_to_repository(@repository.id)
|
||||
@projects = @projects.paginate(:page => (params[:iDisplayStart].to_i/params[:iDisplayLength].to_i).to_i + 1, :per_page => params[:iDisplayLength])
|
||||
@projects = @projects.by_visibilities(['open']) if @repository.platform.platform_type == 'main'
|
||||
@projects = @projects.by_visibilities('open') if @repository.platform.platform_type == 'main'
|
||||
|
||||
@total_projects = @projects.count
|
||||
@projects = @projects.where(['projects.name LIKE ?', "#{params[:sSearch]}%"]) if params[:sSearch] and !params[:sSearch].empty?
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
# -*- encoding : utf-8 -*-
|
||||
class SearchController < ApplicationController
|
||||
before_filter :authenticate_user!
|
||||
# load_and_authorize_resource
|
||||
|
||||
def index
|
||||
params[:type] ||= 'all'
|
||||
case params[:type]
|
||||
when 'all'
|
||||
find_collection('projects')
|
||||
find_collection('users')
|
||||
find_collection('groups')
|
||||
find_collection('platforms')
|
||||
when 'projects', 'users', 'groups', 'platforms'
|
||||
find_collection(params[:type])
|
||||
end
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def find_collection(type)
|
||||
var = :"@#{type}"
|
||||
instance_variable_set var, type.classify.constantize.search(params[:query]).paginate(:page => params[:page]) unless instance_variable_defined?(var)
|
||||
end
|
||||
end
|
|
@ -17,6 +17,7 @@ class Group < ActiveRecord::Base
|
|||
validates :uname, :presence => true, :uniqueness => {:case_sensitive => false}, :format => { :with => /^[a-z0-9_]+$/ }
|
||||
validate { errors.add(:uname, :taken) if User.where('uname LIKE ?', uname).present? }
|
||||
|
||||
scope :search, lambda {|q| where("uname ILIKE ?", "%#{q}%")}
|
||||
scope :by_owner, lambda {|owner| where(:owner_id => owner.id)}
|
||||
scope :by_admin, lambda {|admin| joins(:relations).where(:'relations.role' => 'admin', :'relations.target_id' => admin.id, :'relations.target_type' => 'User')}
|
||||
|
||||
|
|
|
@ -26,7 +26,8 @@ class Platform < ActiveRecord::Base
|
|||
after_destroy lambda { umount_directory_for_rsync unless hidden? }
|
||||
after_update :update_owner_relation
|
||||
|
||||
scope :by_visibilities, lambda {|v| {:conditions => ['visibility in (?)', v.join(',')]}}
|
||||
scope :search, lambda {|q| where("name ILIKE ?", "%#{q}%").open}
|
||||
scope :by_visibilities, lambda {|v| where(:visibility => v)}
|
||||
scope :open, where(:visibility => 'open')
|
||||
scope :hidden, where(:visibility => 'hidden')
|
||||
scope :main, where(:platform_type => 'main')
|
||||
|
|
|
@ -30,8 +30,10 @@ class Project < ActiveRecord::Base
|
|||
attr_readonly :name
|
||||
|
||||
scope :recent, order("name ASC")
|
||||
scope :search, lambda {|q| by_name("%#{q}%").open}
|
||||
scope :by_name, lambda {|name| where('projects.name ILIKE ?', name)}
|
||||
scope :by_visibilities, lambda {|v| {:conditions => ['visibility in (?)', v.join(',')]}}
|
||||
scope :by_visibilities, lambda {|v| where(:visibility => v)}
|
||||
scope :open, where(:visibility => 'open')
|
||||
scope :addable_to_repository, lambda { |repository_id| where("projects.id NOT IN (SELECT project_to_repositories.project_id FROM project_to_repositories WHERE (project_to_repositories.repository_id = #{ repository_id }))") }
|
||||
scope :automateable, where("projects.id NOT IN (SELECT auto_build_lists.project_id FROM auto_build_lists)")
|
||||
|
||||
|
|
|
@ -7,9 +7,9 @@ class User < ActiveRecord::Base
|
|||
devise :database_authenticatable, :registerable, #:omniauthable, # :token_authenticatable, :encryptable, :timeoutable
|
||||
:recoverable, :rememberable, :validatable #, :trackable, :confirmable, :lockable
|
||||
|
||||
has_one :notifier, :class_name => 'Settings::Notifier' #:notifier
|
||||
has_one :notifier, :class_name => 'Settings::Notifier', :dependent => :destroy #:notifier
|
||||
|
||||
has_many :activity_feeds
|
||||
has_many :activity_feeds, :dependent => :destroy
|
||||
|
||||
has_many :authentications, :dependent => :destroy
|
||||
has_many :build_lists, :dependent => :destroy
|
||||
|
@ -17,7 +17,7 @@ class User < ActiveRecord::Base
|
|||
has_many :comments, :dependent => :destroy
|
||||
|
||||
has_many :relations, :as => :object, :dependent => :destroy
|
||||
has_many :targets, :as => :object, :class_name => 'Relation'
|
||||
has_many :targets, :as => :object, :class_name => 'Relation', :dependent => :destroy
|
||||
|
||||
has_many :projects, :through => :targets, :source => :target, :source_type => 'Project', :autosave => true
|
||||
has_many :groups, :through => :targets, :source => :target, :source_type => 'Group', :autosave => true
|
||||
|
@ -40,7 +40,9 @@ class User < ActiveRecord::Base
|
|||
attr_readonly :uname
|
||||
attr_accessor :login
|
||||
|
||||
after_create :create_settings_notifier
|
||||
scope :search, lambda {|q| where("uname ILIKE ?", "%#{q}%")}
|
||||
|
||||
after_create lambda { self.create_notifier }
|
||||
|
||||
def admin?
|
||||
role == 'admin'
|
||||
|
@ -57,6 +59,7 @@ class User < ActiveRecord::Base
|
|||
def fullname
|
||||
return "#{uname} (#{name})"
|
||||
end
|
||||
|
||||
class << self
|
||||
def find_for_database_authentication(warden_conditions)
|
||||
conditions = warden_conditions.dup
|
||||
|
@ -102,11 +105,4 @@ class User < ActiveRecord::Base
|
|||
def avatar(size)
|
||||
"https://secure.gravatar.com/avatar/#{Digest::MD5.hexdigest(email.downcase)}?s=#{size}&r=pg"
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def create_settings_notifier
|
||||
self.create_notifier
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
.lefter= t("layout.build_lists.ownership.index")
|
||||
.both
|
||||
%br
|
||||
= f.submit t("layout.search")
|
||||
= f.submit t("layout.search.header")
|
||||
.block
|
||||
%h3.small= t("activerecord.attributes.build_list.status")
|
||||
.lineForm.aside= f.select :status, BuildList::STATUSES.collect{|status| [BuildList.human_status(status), status]}, {:include_blank => true, :selected => @filter.status}, {:class => 'sel80 aside', :id => 'status', :tabindex => 2}
|
||||
|
@ -52,4 +52,4 @@
|
|||
= f.text_field :bs_id
|
||||
%br
|
||||
%br
|
||||
= f.submit t("layout.search")
|
||||
= f.submit t("layout.search.header")
|
|
@ -17,10 +17,7 @@
|
|||
= render 'layouts/menu/top'
|
||||
.logo= image_tag 'logo-mini.png', :alt => 'logo'
|
||||
.information
|
||||
.search
|
||||
.pic
|
||||
.field
|
||||
%input.gray{:onclick => "if(this.value=='#{t "layout.search"}'){this.value='';this.className='black';}", :onblur => "if(this.value==''){this.value='#{t "layout.search"}';this.className='gray';}", :type => "text", :value => "#{t "layout.search"}"}
|
||||
= render 'search/form'
|
||||
.user
|
||||
.avatar= image_tag gravatar_url(current_user.email, 30), :alt => 'avatar', :height => "30"
|
||||
.profile
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
.search
|
||||
= form_tag search_index_path, :method => 'get' do
|
||||
.pic
|
||||
.field= text_field_tag 'query', params[:query], :placeholder => t("layout.search.header")
|
|
@ -0,0 +1,5 @@
|
|||
= form_tag search_index_path, :method => 'get' do
|
||||
.leftside= text_field_tag 'query', params[:query], :placeholder => t("layout.search.header"), :class => 'exsearch'
|
||||
.lineForm.leftside.rmargin10= select_tag 'type', options_for_select(t('layout.search.types').invert, params[:type]), :class => 'sel80', :id => 'selSearch'
|
||||
.leftside= submit_tag t("layout.search.header"), :class => 'button width100'
|
||||
.both
|
|
@ -0,0 +1,3 @@
|
|||
%p.block
|
||||
.img= image_tag 'ava-admin.png'
|
||||
.forimg= link_to group.uname, group
|
|
@ -0,0 +1 @@
|
|||
%p.block= link_to platform.name, platform
|
|
@ -0,0 +1,4 @@
|
|||
%p.block
|
||||
= link_to "#{project.owner.uname} / #{project.name}", project
|
||||
%br
|
||||
= project.description
|
|
@ -0,0 +1,10 @@
|
|||
- collection = instance_variable_get("@#{type}")
|
||||
%table.tablesorter.bmargin5{:cellpadding => "0", :cellspacing => "0"}
|
||||
%thead
|
||||
%tr
|
||||
%th #{t "layout.#{type}.list_header"} (#{collection.count})
|
||||
%tbody
|
||||
- collection.each do |c|
|
||||
%tr
|
||||
%td= render type.singularize, type.singularize.to_sym => c
|
||||
= link_to t('layout.search.all'), search_index_path(:query => params[:query], :type => type) if collection.present?
|
|
@ -0,0 +1,3 @@
|
|||
%p.block
|
||||
.img= image_tag user.avatar(25)
|
||||
.forimg= link_to user.fullname, user
|
|
@ -0,0 +1,17 @@
|
|||
%h3= t 'layout.search.advanced'
|
||||
= render 'form_advanced'
|
||||
- if params[:type] == 'all'
|
||||
#all
|
||||
= render 'table', :type => 'projects'
|
||||
.both
|
||||
.left.width400.rmargin55
|
||||
= render 'table', :type => 'users'
|
||||
= render 'table', :type => 'groups'
|
||||
.left.width400
|
||||
= render 'table', :type => 'platforms'
|
||||
- else
|
||||
- collection = instance_variable_get("@#{params[:type]}")
|
||||
.tmargin10{:id => params[:type]}= render :collection => collection, :partial => params[:type].to_s.underscore.singularize
|
||||
%br
|
||||
= will_paginate collection
|
||||
.both
|
|
@ -2,5 +2,4 @@
|
|||
.group
|
||||
= label_tag :query, t("layout.search_by_name"), :class => :label
|
||||
= text_field_tag :query
|
||||
%button.search{:type => "submit"}
|
||||
= t("layout.search")
|
||||
%button.search{:type => "submit"}= t("layout.search.header")
|
|
@ -10,5 +10,5 @@
|
|||
.group.navform.wat-cf
|
||||
%button.button{ :type => "submit" }
|
||||
= image_tag("choose.png", :alt => "Save")
|
||||
= t("layout.search")
|
||||
= t("layout.search.header")
|
||||
|
||||
|
|
|
@ -15,7 +15,6 @@ en:
|
|||
filtered_label: (filtered from _MAX_)
|
||||
|
||||
layout:
|
||||
search: Search
|
||||
logged_in_as: You logged as
|
||||
logout: Logout
|
||||
user_list: User list
|
||||
|
@ -26,7 +25,6 @@ en:
|
|||
update: Update
|
||||
delete: Erase
|
||||
save: Save
|
||||
search: Search
|
||||
clone: Clone
|
||||
search_by_name: Filter by name
|
||||
are_you_sure: "Sure?"
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
en:
|
||||
layout:
|
||||
search:
|
||||
header: Search
|
||||
advanced: Advanced search
|
||||
all: Show All
|
||||
types:
|
||||
all: All
|
||||
projects: Projects
|
||||
users: Users
|
||||
groups: Groups
|
||||
platforms: Platforms
|
|
@ -0,0 +1,12 @@
|
|||
ru:
|
||||
layout:
|
||||
search:
|
||||
header: Поиск
|
||||
advanced: Расширенный поиск
|
||||
all: Показать все
|
||||
types:
|
||||
all: Все
|
||||
projects: Проекты
|
||||
users: Пользователи
|
||||
groups: Группы
|
||||
platforms: Платформы
|
|
@ -15,7 +15,6 @@ ru:
|
|||
filtered_label: (отфильтровано из _MAX_)
|
||||
|
||||
layout:
|
||||
search: Поиск
|
||||
logged_in_as: Вы вошли как
|
||||
logout: Выйти
|
||||
user_list: Список пользователей
|
||||
|
@ -26,7 +25,6 @@ ru:
|
|||
update: Обновить
|
||||
delete: Удалить
|
||||
save: Сохранить
|
||||
search: Искать
|
||||
clone: Клонировать
|
||||
search_by_name: Фильтр по имени
|
||||
are_you_sure: "Вы уверены?"
|
||||
|
|
|
@ -184,8 +184,6 @@ Rosa::Application.routes.draw do
|
|||
end
|
||||
end
|
||||
|
||||
resources :activity_feeds, :only => [:index]
|
||||
|
||||
resources :users, :groups do
|
||||
resources :platforms, :only => [:new, :create]
|
||||
|
||||
|
@ -194,6 +192,10 @@ Rosa::Application.routes.draw do
|
|||
# resources :repositories, :only => [:new, :create]
|
||||
end
|
||||
|
||||
resources :activity_feeds, :only => [:index]
|
||||
|
||||
resources :search, :only => [:index]
|
||||
|
||||
match '/catalogs', :to => 'categories#platforms', :as => :catalogs
|
||||
|
||||
match 'product_status', :to => 'product_build_lists#status_build'
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
</div>
|
||||
|
||||
<div class="in">
|
||||
<a class="button disabled" id ="btnLogin" href="#" onClick="logIn();">Войти</a>
|
||||
<input type="submit" id="btnLogin" onClick="logIn();" class="button disabled" value="Войти"></input>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
@ -68,7 +68,10 @@
|
|||
</div>
|
||||
</article>
|
||||
<div class="error" id="hint">
|
||||
<p>Неверная пара логин/пароль.</p>
|
||||
<div class="img"></div>
|
||||
<div class="msg">Неверная пара логин/пароль.</div>
|
||||
<div class="both">
|
||||
</div>
|
||||
</div>
|
||||
<div class="forgot">
|
||||
<div class="password">
|
||||
|
|
|
@ -323,6 +323,7 @@
|
|||
<a href="#">raw</a> | <a href="#">blame</a> | <a href="#">history</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="data">
|
||||
<div class="gutter">
|
||||
<span>1</span><br />
|
||||
<span>2</span><br />
|
||||
|
@ -338,7 +339,7 @@ if ENV[ 'AREL']
|
|||
gem 'arel', :path => ENV['AREL']
|
||||
else
|
||||
gem 'arel'</pre>
|
||||
|
||||
</div>
|
||||
<div class="both"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -7,19 +7,7 @@
|
|||
<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="styles/registration.css" />
|
||||
<script type='text/javascript' src='js/checkbox.js'></script>
|
||||
<script type='text/javascript'>
|
||||
function disError(elem) {
|
||||
buttonCheck();
|
||||
}
|
||||
|
||||
function buttonCheck() {
|
||||
if ((document.getElementById("login").value!="")&&(document.getElementById("name").value!="")&&(document.getElementById("pass").value!="")&&(document.getElementById("pass2").value!="")&&(document.getElementById("email").value!="")) {
|
||||
document.getElementById("btnLogin").className = "button";
|
||||
} else {
|
||||
document.getElementById("btnLogin").className = "button disabled";
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<script type='text/javascript' src='js/registration.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrap">
|
||||
|
@ -73,7 +61,7 @@
|
|||
<div class="both"></div>
|
||||
|
||||
<div class="in">
|
||||
<a id="btnLogin" class="button disabled" href="#">Регистрация</a>
|
||||
<input type="submit" id="btnLogin" class="button disabled" value="Регистрация"></input>
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -81,6 +69,28 @@
|
|||
|
||||
</article>
|
||||
|
||||
<div class="error login" id="hintLogin">
|
||||
<div class="img"></div>
|
||||
<div class="msg">Содержит только латинские буквы.</div>
|
||||
<div class="both"></div>
|
||||
</div>
|
||||
|
||||
<div class="error name" id="hintName">
|
||||
<div class="img"></div>
|
||||
<div class="msg">Использование спецзнаков запрещено.</div>
|
||||
<div class="both"></div>
|
||||
</div>
|
||||
<div class="error email" id="hintEmail">
|
||||
<div class="img"></div>
|
||||
<div class="msg">Введенный текст не является адресом почты.<br />Или такой адрес уже зарегистирован.</div>
|
||||
<div class="both"></div>
|
||||
</div>
|
||||
<div class="error password" id="hintPassword">
|
||||
<div class="img"></div>
|
||||
<div class="msg">Пароль должен содержать от 5 до 20 символов.<br />Допустимы только латинские символы, спецзнаки и цифры.<br />Или пароли не совпадают.</div>
|
||||
<div class="both"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!--Footer-->
|
||||
<footer>
|
||||
|
|
|
@ -0,0 +1,341 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Сборочная среда</title>
|
||||
<script type="text/javascript" src="js/html5shiv.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="styles/main.css" />
|
||||
<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
|
||||
<link href="styles/cusel.css" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript" src="js/cusel-2.5.js"></script>
|
||||
<script type="text/javascript" src="js/cusel-init.js"></script>
|
||||
<script type="text/javascript" src="js/all.js"></script>
|
||||
<script type="text/javascript" src="js/exsearch.js"></script>
|
||||
<link rel="stylesheet" href="styles/blue/style.css" type="text/css" id="" media="print, projection, screen" />
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrap">
|
||||
<!--Top block-->
|
||||
<header>
|
||||
<div class="left">
|
||||
</div>
|
||||
<div class="middle">
|
||||
<!--Main menu-->
|
||||
<menu>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="#" class="first">Главная</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Проекты</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Группы</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Мониторинг</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" class="active">Платформа</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Документация</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="logo">
|
||||
<img src="pics/logo-mini.png" alt="logo" />
|
||||
</div>
|
||||
</menu>
|
||||
<div class="information">
|
||||
<!--Search-->
|
||||
<div class="search">
|
||||
<div class="pic">
|
||||
</div>
|
||||
<div class="field">
|
||||
<input type="text" value="Поиск" class="gray" onClick="if(this.value=='Поиск'){this.value='';this.className='black';}" onblur="if(this.value==''){this.value='Поиск';this.className='gray';}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="user">
|
||||
<div class="avatar" onclick="droplist();">
|
||||
<img src="pics/ava.png" alt="avatar" height="30" />
|
||||
</div>
|
||||
<div class="profile" onclick="droplist();">
|
||||
<a href="#" onclick="droplist();">mikimaus <img src="pics/expand-white.png" alt="ex" /></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="both">
|
||||
</div>
|
||||
|
||||
<div class="droplist-wrap">
|
||||
<div class="droplist" id="droplist">
|
||||
<div class="a"><a href="#">Публичный профиль</a></div>
|
||||
<div class="a"><a href="#">Настройки</a></div>
|
||||
<div class="a"><a href="#">Выйти</a></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="right">
|
||||
</div>
|
||||
<div class="both">
|
||||
</div>
|
||||
</header>
|
||||
<div class="both">
|
||||
</div>
|
||||
|
||||
<!--Page-->
|
||||
<article>
|
||||
<div class="all">
|
||||
|
||||
<h3>Расширенный поиск</h3>
|
||||
|
||||
<div class="leftside">
|
||||
<input type="text" class="exsearch gray" value="Найти..." onClick="if(this.value=='Найти...'){this.value='';this.className='exsearch black';}" onblur="if(this.value==''){this.value='Найти...';this.className='exsearch gray';}" />
|
||||
</div>
|
||||
<div class="lineForm leftside rmargin10">
|
||||
<select class="sel80" id="selSearch" name="selSearch" tabindex="2">
|
||||
<option selected="selected" value="all">Все</option>
|
||||
<option value="projects">Проекты</option>
|
||||
<option value="users">Пользователи и группы</option>
|
||||
<option value="platforms">Платформы</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="leftside">
|
||||
<input type="submit" class="button width100" value="Найти" />
|
||||
</div>
|
||||
<div class="both"></div>
|
||||
|
||||
|
||||
<div id="all" style="display: block;">
|
||||
<table id="myTable" class="tablesorter bmargin5" cellpadding="0" cellspacing="0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Проекты (10909349843874)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<a href="#">santaux / WacomDrivers</a><br />
|
||||
Данный проект создан с целью улучшения поддержки продукции компании Wacom под Linux. В настоящее время ощущается острая проблема с
|
||||
функциональными клавишами как на пере, так и на самом дигитайзере. Особое внимание уделяется профессиональной линейке продукции,
|
||||
серии Intiuos4.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<a href="#">santaux / WacomDrivers</a><br />
|
||||
Данный проект создан с целью улучшения поддержки продукции компании Wacom под Linux. В настоящее время ощущается острая проблема с
|
||||
функциональными клавишами как на пере, так и на самом дигитайзере. Особое внимание уделяется профессиональной линейке продукции,
|
||||
серии Intiuos4.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<a href="#">santaux / WacomDrivers</a><br />
|
||||
Данный проект создан с целью улучшения поддержки продукции компании Wacom под Linux. В настоящее время ощущается острая проблема с
|
||||
функциональными клавишами как на пере, так и на самом дигитайзере. Особое внимание уделяется профессиональной линейке продукции,
|
||||
серии Intiuos4.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="display: none;" id="row1-1">
|
||||
<td>
|
||||
<p>
|
||||
<a href="#">santaux / WacomDrivers</a><br />
|
||||
Данный проект создан с целью улучшения поддержки продукции компании Wacom под Linux. В настоящее время ощущается острая проблема с
|
||||
функциональными клавишами как на пере, так и на самом дигитайзере. Особое внимание уделяется профессиональной линейке продукции,
|
||||
серии Intiuos4.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="display: none;" id="row1-2">
|
||||
<td>
|
||||
<p>
|
||||
<a href="#">santaux / WacomDrivers</a><br />
|
||||
Данный проект создан с целью улучшения поддержки продукции компании Wacom под Linux. В настоящее время ощущается острая проблема с
|
||||
функциональными клавишами как на пере, так и на самом дигитайзере. Особое внимание уделяется профессиональной линейке продукции,
|
||||
серии Intiuos4.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<a href="#" id="projects-more" class="lmargin7">Показать все</a>
|
||||
<div class="both"></div>
|
||||
|
||||
<div class="left width400 rmargin55">
|
||||
<table id="myTable2" class="tablesorter bmargin5" cellpadding="0" cellspacing="0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Пользователи / группы (1096)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="img"><img src="pics/ava-admin.png" /></div><div class="forimg">jeni (Jane Conzi)</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="img"><img src="pics/ava-admin.png" /></div><div class="forimg">miki (Mike Shane)</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="img"><img src="pics/ava-admin.png" /></div><div class="forimg">vitko (Виталий Усупов)</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="img"><img src="pics/ava-admin.png" /></div><div class="forimg">miha (Михаил Буданов)</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="display: none;" id="row2-1">
|
||||
<td>
|
||||
<div class="img"><img src="pics/ava-admin.png" /></div><div class="forimg">miha (Михаил Буданов)</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="display: none;" id="row2-2">
|
||||
<td>
|
||||
<div class="img"><img src="pics/ava-admin.png" /></div><div class="forimg">miha (Михаил Буданов)</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<a href="#" id="users-more" class="lmargin5">Показать все</a>
|
||||
</div>
|
||||
|
||||
<div class="left width400">
|
||||
<table id="myTable3" class="tablesorter bmargin5" cellpadding="0" cellspacing="0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Платформы (96)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="#">rosa2011</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="#">rosa_lts1</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="#">mandriva_2010.1</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="#">rosa_tech_preview_2012</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="display: none;" id="row3-1">
|
||||
<td>
|
||||
<a href="#">rosa_tech_preview_2012</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="display: none;" id="row3-2">
|
||||
<td>
|
||||
<a href="#">rosa_tech_preview_2012</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<a href="#" id="platforms-more" class="lmargin5">Показать все</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="both"></div>
|
||||
|
||||
<div id="projects" style="display: none;" class="tmargin10">
|
||||
<a href="#">santaux / WacomDrivers</a><br />
|
||||
Данный проект создан с целью улучшения поддержки продукции компании Wacom под Linux. В настоящее время ощущается острая проблема с
|
||||
функциональными клавишами как на пере, так и на самом дигитайзере. Особое внимание уделяется профессиональной линейке продукции,
|
||||
серии Intiuos4. <br />
|
||||
<br />
|
||||
<a href="#">santaux / WacomDrivers</a><br />
|
||||
Данный проект создан с целью улучшения поддержки продукции компании Wacom под Linux. В настоящее время ощущается острая проблема с
|
||||
функциональными клавишами как на пере, так и на самом дигитайзере. Особое внимание уделяется профессиональной линейке продукции,
|
||||
серии Intiuos4. <br />
|
||||
<br />
|
||||
<a href="#">santaux / WacomDrivers</a><br />
|
||||
Данный проект создан с целью улучшения поддержки продукции компании Wacom под Linux. В настоящее время ощущается острая проблема с
|
||||
функциональными клавишами как на пере, так и на самом дигитайзере. Особое внимание уделяется профессиональной линейке продукции,
|
||||
серии Intiuos4. <br />
|
||||
<br />
|
||||
</div>
|
||||
|
||||
<div id="users" style="display: none;" class="tmargin10">
|
||||
<div class="img"><img src="pics/ava-admin.png" /></div><div class="forimg">jeni (Jane Conzi)</div>
|
||||
<div class="both"></div>
|
||||
<div class="img"><img src="pics/ava-admin.png" /></div><div class="forimg">miki (Mike Shane)</div>
|
||||
<div class="both"></div>
|
||||
<div class="img"><img src="pics/ava-admin.png" /></div><div class="forimg">vitko (Виталий Усупов)</div>
|
||||
<div class="both"></div>
|
||||
<div class="img"><img src="pics/ava-admin.png" /></div><div class="forimg">miha (Михаил Буданов)</div>
|
||||
<div class="both"></div>
|
||||
</div>
|
||||
|
||||
<div id="platforms" style="display: none;" class="tmargin10">
|
||||
<a href="#">rosa2011</a><br />
|
||||
<a href="#">rosa_lts1</a><br />
|
||||
<a href="#">mandriva_2010.1</a><br />
|
||||
<a href="#">rosa_tech_preview_2012</a>
|
||||
</div>
|
||||
|
||||
<div class="both"></div>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
|
||||
</div>
|
||||
<!--Footer-->
|
||||
<footer>
|
||||
<ul>
|
||||
<li>
|
||||
ROSA Лаб. © 2012 <img src="pics/square.png" alt="_" />
|
||||
</li>
|
||||
<li>
|
||||
<img src="pics/flag.png" alt="rosa" /> <img src="pics/square.png" alt="_" />
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">О компании</a> <img src="pics/square.png" alt="_" />
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Контакты</a> <img src="pics/square.png" alt="_" />
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Условия использования</a> <img src="pics/square.png" alt="_" />
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Конфиденциальность</a> <img src="pics/square.png" alt="_" />
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Безопасность</a>
|
||||
</li>
|
||||
</ul>
|
||||
</footer>
|
||||
<script>
|
||||
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
|
||||
lineNumbers: true
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,45 @@
|
|||
$(document).ready(function() {
|
||||
$("#selSearch").change(function() {
|
||||
var selection = document.getElementById("selSearch").value;
|
||||
if (selection == "all") {
|
||||
$("#projects").fadeOut(0);
|
||||
$("#platforms").fadeOut(0);
|
||||
$("#users").fadeOut(0);
|
||||
$("#all").fadeIn("fast");
|
||||
}
|
||||
if (selection == "projects") {
|
||||
$("#all").fadeOut(0);
|
||||
$("#platforms").fadeOut(0);
|
||||
$("#users").fadeOut(0);
|
||||
$("#projects").fadeIn("fast");
|
||||
}
|
||||
if (selection == "users") {
|
||||
$("#all").fadeOut(0);
|
||||
$("#projects").fadeOut(0);
|
||||
$("#platforms").fadeOut(0);
|
||||
$("#users").fadeIn("fast");
|
||||
}
|
||||
if (selection == "platforms") {
|
||||
$("#all").fadeOut(0);
|
||||
$("#projects").fadeOut(0);
|
||||
$("#users").fadeOut(0);
|
||||
$("#platforms").fadeIn("fast");
|
||||
}
|
||||
});
|
||||
|
||||
$("#projects-more").click(function() {
|
||||
$("#row1-1").fadeIn("fast");
|
||||
$("#row1-2").fadeIn("fast");
|
||||
});
|
||||
|
||||
$("#users-more").click(function() {
|
||||
$("#row2-1").fadeIn("fast");
|
||||
$("#row2-2").fadeIn("fast");
|
||||
});
|
||||
|
||||
$("#platforms-more").click(function() {
|
||||
$("#row3-1").fadeIn("fast");
|
||||
$("#row3-2").fadeIn("fast");
|
||||
});
|
||||
|
||||
});
|
|
@ -0,0 +1,72 @@
|
|||
function logIn() {
|
||||
$("#hintLogin").fadeIn("slow");
|
||||
document.getElementById("login").className="registartion-input-error";
|
||||
$("#hintName").fadeIn("slow");
|
||||
document.getElementById("name").className="registartion-input-error";
|
||||
$("#hintEmail").fadeIn("slow");
|
||||
document.getElementById("email").className="registartion-input-error";
|
||||
$("#hintPassword").fadeIn("slow");
|
||||
document.getElementById("pass").className="registartion-input-error";
|
||||
document.getElementById("pass2").className="registartion-input-error";
|
||||
}
|
||||
|
||||
function disError(elem) {
|
||||
$("#hintLogin").fadeOut("fast");
|
||||
$("#hintName").fadeOut("fast");
|
||||
$("#hintEmail").fadeOut("fast");
|
||||
$("#hintPassword").fadeOut("fast");
|
||||
if (document.getElementById("login").className=="registartion-input-error") {
|
||||
if (this.id=="login") {
|
||||
document.getElementById("login").className="registartion-input-focus";
|
||||
} else {
|
||||
document.getElementById("login").className="registartion-input-no-focus";
|
||||
}
|
||||
}
|
||||
if (document.getElementById("name").className=="registartion-input-error") {
|
||||
if (this.id=="name") {
|
||||
document.getElementById("name").className="registartion-input-focus";
|
||||
} else {
|
||||
document.getElementById("name").className="registartion-input-no-focus";
|
||||
}
|
||||
}
|
||||
if (document.getElementById("email").className=="registartion-input-error") {
|
||||
if (this.id=="email") {
|
||||
document.getElementById("email").className="registartion-input-focus";
|
||||
} else {
|
||||
document.getElementById("email").className="registartion-input-no-focus";
|
||||
}
|
||||
}
|
||||
if (document.getElementById("pass").className=="registartion-input-error") {
|
||||
if (this.id=="pass") {
|
||||
document.getElementById("pass").className="registartion-input-focus";
|
||||
} else {
|
||||
document.getElementById("pass").className="registartion-input-no-focus";
|
||||
}
|
||||
}
|
||||
if (document.getElementById("pass2").className=="registartion-input-error") {
|
||||
if (this.id=="pass2") {
|
||||
document.getElementById("pass2").className="registartion-input-focus";
|
||||
} else {
|
||||
document.getElementById("pass2").className="registartion-input-no-focus";
|
||||
}
|
||||
}
|
||||
buttonCheck();
|
||||
}
|
||||
|
||||
/*function disError(elem) {
|
||||
buttonCheck();
|
||||
}*/
|
||||
|
||||
function buttonCheck() {
|
||||
if ((document.getElementById("login").value!="")&&(document.getElementById("name").value!="")&&(document.getElementById("pass").value!="")&&(document.getElementById("pass2").value!="")&&(document.getElementById("email").value!="")) {
|
||||
document.getElementById("btnLogin").className = "button";
|
||||
} else {
|
||||
document.getElementById("btnLogin").className = "button disabled";
|
||||
}
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
$("#btnLogin").click(function() {
|
||||
logIn();
|
||||
});
|
||||
});
|
Binary file not shown.
After Width: | Height: | Size: 3.1 KiB |
|
@ -105,9 +105,9 @@ a.button, input.button {
|
|||
}
|
||||
|
||||
input.button {
|
||||
padding: 5px 27px 8px 27px;
|
||||
height: 28px;
|
||||
width: 110px;
|
||||
padding: 3px 27px 8px 27px;
|
||||
height: 25px;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
a.button:hover, input.button:hover {
|
||||
|
@ -120,7 +120,7 @@ a.button:active, input.button:active{
|
|||
background: url("../pics/button-green-press.png");
|
||||
}
|
||||
|
||||
a.button:disabled, a.button.disabled, input.button:disabled {
|
||||
a.button:disabled, a.button.disabled, input.button:disabled, input.button.disabled {
|
||||
background: #125687;
|
||||
background: url("../pics/button-green-disabled.png");
|
||||
cursor: default;
|
||||
|
@ -252,9 +252,8 @@ nav p {
|
|||
}
|
||||
|
||||
div.error {
|
||||
background: url("../pics/error-message.png");
|
||||
width: 237px;
|
||||
height: 35px;
|
||||
width: auto;
|
||||
height: auto;
|
||||
font-size: 12px;
|
||||
position: absolute;
|
||||
margin-top: -159px;
|
||||
|
@ -262,10 +261,33 @@ div.error {
|
|||
display: none;
|
||||
}
|
||||
|
||||
div.error div.img {
|
||||
background: url("../pics/error-arrow.png") 0% 5px no-repeat;
|
||||
width: 19px;
|
||||
height: 35px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
|
||||
div.error div.msg {
|
||||
background: #ededed;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
width: auto;
|
||||
height: auto;
|
||||
float: left;
|
||||
-webkit-box-shadow: 0px 6px 3px -3px rgba(0, 0, 0, 0.2);
|
||||
-moz-box-shadow: 0px 6px 3px -3px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 0px 6px 3px -3px rgba(0, 0, 0, 0.2);
|
||||
padding: 5px 20px 5px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
div.error p{
|
||||
margin:0;
|
||||
padding: 0;
|
||||
padding-top: 7px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
|
|
@ -207,6 +207,8 @@ header div.profile a:hover {
|
|||
|
||||
header div.droplist-wrap {
|
||||
margin: -4px 0px 0px 0px;
|
||||
width: 151px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
header div.droplist {
|
||||
|
@ -218,7 +220,6 @@ header div.droplist {
|
|||
box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5);
|
||||
position: absolute;
|
||||
margin-top: 0px;
|
||||
margin-left: 138px;
|
||||
border-radius: 0px 0px 4px 4px;
|
||||
display: none;
|
||||
text-align: right;
|
||||
|
@ -508,7 +509,7 @@ article input[type="submit"] {
|
|||
background-image: linear-gradient(top, #68a3d8, #125687);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687');
|
||||
border: 1px solid #5084b4;
|
||||
padding: 4px 20px;
|
||||
padding: 0px 20px 0px;
|
||||
margin: 0;
|
||||
font-size: 12px;
|
||||
text-decoration: none;
|
||||
|
@ -518,8 +519,9 @@ article input[type="submit"] {
|
|||
border-radius: 5px;
|
||||
text-align: center;
|
||||
height: auto;
|
||||
height: 28px;
|
||||
width: auto;
|
||||
|
||||
font-family: Tahoma;
|
||||
}
|
||||
|
||||
article input[type="submit"]:hover{
|
||||
|
@ -838,7 +840,7 @@ div.rightlist textarea {
|
|||
}
|
||||
|
||||
div.rightlist input[type="text"], div.rightlist input[type="password"] {
|
||||
height: 15px;
|
||||
height: 16px;
|
||||
width: 350px;
|
||||
border: 1px solid #dedede;
|
||||
border-radius: 4px;
|
||||
|
@ -849,30 +851,30 @@ div.rightlist input[type="text"], div.rightlist input[type="password"] {
|
|||
|
||||
/* Admin-members page */
|
||||
|
||||
.right table div.img {
|
||||
div.img {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.right table div.radio {
|
||||
table div.radio {
|
||||
float: left;
|
||||
margin: 5px 0px 0px 0px;
|
||||
}
|
||||
|
||||
.right table div.forimg {
|
||||
div.forimg {
|
||||
float: left;
|
||||
margin: 5px 0px 0px 5px;
|
||||
}
|
||||
|
||||
.right table div.forradio {
|
||||
table div.forradio {
|
||||
float: left;
|
||||
margin: 5px 0px 0px 5px;
|
||||
}
|
||||
|
||||
.right table span.niceCheck-main {
|
||||
table span.niceCheck-main {
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
.right div.admin-search {
|
||||
div.admin-search {
|
||||
float: left;
|
||||
}
|
||||
|
||||
|
@ -2160,3 +2162,49 @@ article div.all.error404 p.search {
|
|||
margin-top: 80px;
|
||||
width: 230px;
|
||||
}
|
||||
|
||||
/*search*/
|
||||
|
||||
input.button.width100 {
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
input[type="text"].exsearch {
|
||||
height: 16px;
|
||||
border: 1px solid #dedede;
|
||||
border-radius: 4px;
|
||||
padding: 5px;
|
||||
font-family: Tahoma, Geneva, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
width: 520px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
div.lineForm.leftside.rmargin10 {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
table.tablesorter.bmargin5 {
|
||||
margin-bottom: 1px;
|
||||
}
|
||||
|
||||
div.width400 {
|
||||
width: 400px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
div.width400.rmargin55 {
|
||||
margin-right: 55px;
|
||||
}
|
||||
|
||||
div.tmargin10 {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
a.lmargin7 {
|
||||
margin-left: 7px;
|
||||
}
|
||||
|
||||
a.lmargin5 {
|
||||
margin-left: 5px;
|
||||
}
|
|
@ -123,9 +123,9 @@ article div.right {
|
|||
}
|
||||
|
||||
input.button {
|
||||
padding: 5px 27px 8px 27px;
|
||||
height: 28px;
|
||||
width: 110px;
|
||||
padding: 3px 27px 8px 27px;
|
||||
height: 25px;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
a.button:hover, input.button:hover {
|
||||
|
@ -138,7 +138,7 @@ a.button:active, input.button:active{
|
|||
background: url("../pics/button-green-press.png");
|
||||
}
|
||||
|
||||
a.button:disabled, a.button.disabled, input.button:disabled {
|
||||
a.button:disabled, a.button.disabled, input.button:disabled, input.button.disabled{
|
||||
background: #125687;
|
||||
background: url("../pics/button-green-disabled.png");
|
||||
cursor: default;
|
||||
|
@ -222,3 +222,64 @@ footer ul li a {
|
|||
footer ul li a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
|
||||
div.error {
|
||||
width: auto;
|
||||
height: auto;
|
||||
font-size: 12px;
|
||||
position: absolute;
|
||||
margin-top: -159px;
|
||||
margin-left: 582px;
|
||||
display: none;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
div.error div.img {
|
||||
background: url("../pics/error-arrow.png") 0% 5px no-repeat;
|
||||
width: 19px;
|
||||
height: 35px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
|
||||
div.error div.msg {
|
||||
background: #ededed;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
width: auto;
|
||||
height: auto;
|
||||
float: left;
|
||||
-webkit-box-shadow: 0px 6px 3px -3px rgba(0, 0, 0, 0.2);
|
||||
-moz-box-shadow: 0px 6px 3px -3px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 0px 6px 3px -3px rgba(0, 0, 0, 0.2);
|
||||
padding: 5px 20px 5px;
|
||||
}
|
||||
|
||||
|
||||
div.error p{
|
||||
margin:0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
div.error.login {
|
||||
margin-top: -242px;
|
||||
margin-left: 650px;
|
||||
}
|
||||
|
||||
div.error.name {
|
||||
margin-top: -202px;
|
||||
margin-left: 650px;
|
||||
}
|
||||
|
||||
div.error.email {
|
||||
margin-top: -161px;
|
||||
margin-left: 650px;
|
||||
}
|
||||
|
||||
div.error.password {
|
||||
margin-top: -101px;
|
||||
margin-left: 650px;
|
||||
}
|
|
@ -2,10 +2,8 @@
|
|||
//= require gollum/gollum.dialog
|
||||
//= require gollum/gollum.placeholder
|
||||
//= require gollum/editor/gollum.editor
|
||||
// require hl/shCore
|
||||
//= require codemirror
|
||||
//= require codemirror/runmode
|
||||
//= require_tree ./codemirror/modes
|
||||
//= require cusel
|
||||
// require_tree .
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue