From 5baac47519f0251a58018d06e4d333d0cd6bc3f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=98=9F?= Date: Wed, 25 Mar 2015 14:30:05 +0800 Subject: [PATCH 01/35] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/system/lang/zh-cn/lang.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/system/lang/zh-cn/lang.php b/modules/system/lang/zh-cn/lang.php index 634b68a9e..1ef55d714 100644 --- a/modules/system/lang/zh-cn/lang.php +++ b/modules/system/lang/zh-cn/lang.php @@ -226,8 +226,8 @@ return [ 'hint' => '日志显示了程序中的潜在错误, 比如异常和调试信息.', 'menu_label' => '事件日志', 'menu_description' => '查看系统日志信息, 包括时间和详细信息.', - 'empty_link' => '空事件日志', - 'empty_loading' => '空事件日志...', + 'empty_link' => '清空事件日志', + 'empty_loading' => '清空事件日志...', 'empty_success' => '成功清空时间日志.', 'return_link' => '返回时间日志', 'id' => 'ID', @@ -240,8 +240,8 @@ return [ 'hint' => '这个日志显示了需要注意的浏览器请求. 比如如果一个访问者打开一个没有的CMS页面, 一条返回状态404的记录被创建.', 'menu_label' => '请求日志', 'menu_description' => '查看坏的或者重定向的请求, 比如页面找不到(404).', - 'empty_link' => '空请求日志', - 'empty_loading' => '空请求日志...', + 'empty_link' => '清空请求日志', + 'empty_loading' => '清空请求日志...', 'empty_success' => '成功清空请求日志.', 'return_link' => '返回请求日志', 'id' => 'ID', From 897d291b7873ebe822579199de70796baf66609e Mon Sep 17 00:00:00 2001 From: Amanda Tresbach Date: Wed, 25 Mar 2015 16:33:27 -0300 Subject: [PATCH 02/35] Improve and update Brazilian files --- modules/backend/lang/en/lang.php | 4 +- modules/backend/lang/pt-br/lang.php | 230 +++++++++++------------ modules/cms/lang/pt-br/lang.php | 208 +++++++++++++------- modules/system/lang/en/lang.php | 1 - modules/system/lang/pt-br/lang.php | 137 ++++++++------ modules/system/lang/pt-br/validation.php | 122 ++++++------ 6 files changed, 392 insertions(+), 310 deletions(-) diff --git a/modules/backend/lang/en/lang.php b/modules/backend/lang/en/lang.php index 88c01e4bf..7adff3e6d 100644 --- a/modules/backend/lang/en/lang.php +++ b/modules/backend/lang/en/lang.php @@ -299,6 +299,6 @@ return [ 'email' => 'Email' ], 'filter' => [ - 'all' => 'all' - ] + 'all' => 'all', + ], ]; diff --git a/modules/backend/lang/pt-br/lang.php b/modules/backend/lang/pt-br/lang.php index 4ffb6ac44..44e4dafdb 100644 --- a/modules/backend/lang/pt-br/lang.php +++ b/modules/backend/lang/pt-br/lang.php @@ -2,26 +2,26 @@ return [ 'auth' => [ - 'title' => 'Área de Administração' + 'title' => 'Área Administrativa', ], 'field' => [ - 'invalid_type' => 'Tipo de campo inválido utilizado :type.', - 'options_method_not_exists' => 'A classe do modelo :model deve definir um método :method() retornando opções pro campo ":field".', + 'invalid_type' => 'Tipo de campo inválido :type.', + 'options_method_not_exists' => 'A classe :model deve definir um método :method() retornando opções para o campo ":field".', ], 'widget' => [ - 'not_registered' => "Uma classe de widget com o nome ':name' não foi definida", - 'not_bound' => "Um widget cuja classe se chama ':name' não foi indexado ao controlador", + 'not_registered' => 'Uma classe de widget com o nome ":name" não foi definida', + 'not_bound' => 'Um widget da classe ":name" não foi ligado ao controlador', ], 'page' => [ - 'untitled' => "Sem Título", + 'untitled' => 'Sem Título', 'access_denied' => [ - 'label' => "Acesso negado", - 'help' => "Você não tem as permissões necessárias para visualizar esta página.", - 'cms_link' => "Voltar à área de administração", + 'label' => 'Acesso negado', + 'help' => 'Você não tem as permissões necessárias para visualizar esta página.', + 'cms_link' => 'Retornar à área administrativa', ], ], 'partial' => [ - 'not_found_name' => "O bloco ':name' não foi encontrado.", + 'not_found_name' => 'O bloco ":name" não foi encontrado.', ], 'account' => [ 'sign_out' => 'Sair', @@ -30,31 +30,31 @@ return [ 'restore' => 'Restaurar', 'login_placeholder' => 'usuário', 'password_placeholder' => 'senha', - 'forgot_password' => "Esqueceu sua senha?", - 'enter_email' => "Digite seu email", - 'enter_login' => "Digite seu nome de usuário", - 'email_placeholder' => "e-mail", - 'enter_new_password' => "Digite uma nova senha", - 'password_reset' => "Redefinir sua senha", - 'restore_success' => "Um email com instruções para redfinir sua senha foram enviados para o seu email.", - 'restore_error' => "O usuário ':login' não foi encontrado", - 'reset_success' => "Sua senha foi redefinida com sucesso. Você já pode fazer o login.", - 'reset_error' => "Erro ao redefinir sua senha. Por favor, tente de novo.", - 'reset_fail' => "Falha ao redefinir sua senha!", + 'forgot_password' => 'Esqueceu sua senha?', + 'enter_email' => 'Digite seu email', + 'enter_login' => 'Digite seu nome de usuário', + 'email_placeholder' => 'e-mail', + 'enter_new_password' => 'Digite uma nova senha', + 'password_reset' => 'Redefinir sua senha', + 'restore_success' => 'Um email com instruções para redfinir sua senha foram enviados para o seu email.', + 'restore_error' => 'O usuário ":login" não foi encontrado', + 'reset_success' => 'Sua senha foi redefinida com sucesso. Você já pode entrar novamente.', + 'reset_error' => 'A senha redefinida é inválida. Por favor, tente de novo!', + 'reset_fail' => 'Falha ao redefinir sua senha!', 'apply' => 'Aplicar', 'cancel' => 'Cancelar', 'delete' => 'Excluir', - 'ok' => 'OK', + 'ok' => 'Ok', ], 'dashboard' => [ 'menu_label' => 'Painel', 'widget_label' => 'Widget', 'widget_width' => 'Largura', - 'full_width' => 'Largura completa', + 'full_width' => 'Largura total', 'add_widget' => 'Adicionar widget', 'widget_inspector_title' => 'Configurações do widget', - 'widget_inspector_description' => 'Relatório de configurações do widget', - 'widget_columns_label' => 'Largura de :columns', + 'widget_inspector_description' => 'Configurar widget de relatório', + 'widget_columns_label' => 'Largura :columns', 'widget_columns_description' => 'Largura do widget, um número entre 1 e 10.', 'widget_columns_error' => 'Por favor, entre com a largura do widget. Deve ser um número entre 1 e 10.', 'columns' => '{1} coluna|[2,Inf] colunas', @@ -63,11 +63,11 @@ return [ 'widget_title_label' => 'Título do widget', 'widget_title_error' => 'O título do widget é necessário.', 'status' => [ - 'widget_title_default' => 'Condição do Sistema', + 'widget_title_default' => 'Status do Sistema', 'online' => 'online', 'maintenance' => 'em manutenção', 'update_available' => '{0} atualizações disponíveis!|{1} atualização disponível!|[2,Inf] atualizações disponíveis!', - ] + ], ], 'user' => [ 'name' => 'Administrador', @@ -75,22 +75,22 @@ return [ 'menu_description' => 'Gerenciar administradores, grupos e permissões.', 'list_title' => 'Gerenciar administradores', 'new' => 'Novo administrador', - 'login' => "Usuário", - 'first_name' => "Nome", - 'last_name' => "Sobrenome", - 'full_name' => "Nome Completo", - 'email' => "E-mail", - 'groups' => "Grupos", - 'groups_comment' => "Defina a quais grupos essa pessoa pertence.", - 'avatar' => "Foto", - 'password' => "Senha", - 'password_confirmation' => "Confirme a senha", + 'login' => 'Usuário', + 'first_name' => 'Nome', + 'last_name' => 'Sobrenome', + 'full_name' => 'Nome Completo', + 'email' => 'E-mail', + 'groups' => 'Grupos', + 'groups_comment' => 'Defina a quais grupos essa pessoa pertence.', + 'avatar' => 'Foto', + 'password' => 'Senha', + 'password_confirmation' => 'Confirme a senha', 'permissions' => 'Permissões', - 'superuser' => "Super Usuário", - 'superuser_comment' => "Marque essa caixa para liberar o acesso completo para este usuário.", + 'superuser' => 'Super Usuário', + 'superuser_comment' => 'Marque para liberar o acesso irrestrito para este usuário.', 'send_invite' => 'Enviar convite por e-mail', - 'send_invite_comment' => 'Marque esta caixa para enviar um convite por e-mail', - 'delete_confirm' => 'Você realmente quer apagar este administrador?', + 'send_invite_comment' => 'Marque para enviar um convite por e-mail', + 'delete_confirm' => 'Você realmente deseja apagar este administrador?', 'return' => 'Retornar à lista de administradores', 'allow' => 'Permitir', 'inherit' => 'Herdar', @@ -99,58 +99,58 @@ return [ 'name' => 'Grupo', 'name_field' => 'Nome', 'description_field' => 'Descrição', - 'is_new_user_default_field' => 'Adicionar novos administradores para este grupo por padrão', + 'is_new_user_default_field' => 'Adicionar novos administradores a este grupo por padrão', 'code_field' => 'Código', - 'code_comment' => 'Insira um código único, se você quiser acessá-lo com a API.', + 'code_comment' => 'Insira um código exclusivo se você quiser acessá-lo com a API.', 'menu_label' => 'Grupos', 'list_title' => 'Gerenciar grupos', 'new' => 'Novo grupo administrador', - 'delete_confirm' => 'Você realmente deseja excluir este grupo de administradores?', - 'return' => 'Voltar para a lista de grupos de administradores', + 'delete_confirm' => 'Você realmente deseja excluir este grupo?', + 'return' => 'Voltar para a lista de grupos', ], 'preferences' => [ - 'not_authenticated' => 'Nenhum usuário autenticado pra carregar as preferências.' - ] + 'not_authenticated' => 'Nenhum usuário autenticado para carregar as preferências.', + ], ], 'list' => [ 'default_title' => 'Lista', 'search_prompt' => 'Buscar...', 'no_records' => 'Nenhum registro encontrado.', - 'missing_model' => 'Lista usado em :class não tem um modelo definido.', + 'missing_model' => 'Lista usada em :class não tem um model definido.', 'missing_column' => 'Não existe definição de coluna para :columns.', 'missing_columns' => 'Lista utilizada em :class não possui colunas de lista definidas.', - 'missing_definition' => "Lista não possui uma coluna para o campo ':field'.", - 'behavior_not_ready' => 'Lista não foi inicializada. Confira se você chamou makeLists() no seu controlador.', - 'invalid_column_datetime' => "Valor da coluna ':column' não é um objeto DateTime, você esqueceu da referência de \$dates no modelo?", + 'missing_definition' => 'Lista não possui uma coluna para ":field".', + 'behavior_not_ready' => 'Lista não foi inicializada. Confira se você chamou makeLists() no controller.', + 'invalid_column_datetime' => 'Valor da coluna ":column" não é um objeto DateTime, você esqueceu registrar \$dates no Model?', 'pagination' => 'Registros exibidos: :from-:to de :total', 'prev_page' => 'Anterior', 'next_page' => 'Próxima', 'loading' => 'Carregando...', 'setup_title' => 'Configuração da Lista', - 'setup_help' => 'Utilize as caixas para selecionar as colunas que deseja ver na lista. Você pode alterar as posições das colunas arrastando-as para cima ou para baixo.', + 'setup_help' => 'Selecione as colunas que deseja ver na lista. Você pode alterar as posições das colunas arrastando-as para cima ou para baixo.', 'records_per_page' => 'Registros por página', - 'records_per_page_help' => 'Selecione o número de registros por página a serem exibidos. Mas, atenção! Números elevados podem prejudicar a performance do sistema.', + 'records_per_page_help' => 'Selecione o número de registros a serem exibidos por página. Note que um número grande pode prejudicar a performance.', 'delete_selected' => 'Deletar selecionado', 'delete_selected_empty' => 'Não há registros selecionados para excluir.', 'delete_selected_confirm' => 'Excluir os registros selecionados?', - 'delete_selected_success' => 'Registros selecionados excluidos com sucesso.', + 'delete_selected_success' => 'Registros selecionados excluídos com sucesso.', ], 'fileupload' => [ 'attachment' => 'Anexo', 'help' => 'Adicione um título e descrição a este anexo.', 'title_label' => 'Título', - 'description_label' => 'Descrição' + 'description_label' => 'Descrição', ], 'form' => [ - 'create_title' => "Novo :name", - 'update_title' => "Editar :name", - 'preview_title' => "Visualizar :name", + 'create_title' => 'Novo :name', + 'update_title' => 'Editar :name', + 'preview_title' => 'Visualizar :name', 'create_success' => ':name foi criado com sucesso', 'update_success' => ':name foi atualizado com sucesso', 'delete_success' => ':name foi apagado com sucesso', - 'missing_id' => "ID do registro não especificado", - 'missing_model' => 'Formulário utilizado na classe :class não tem um modelo definido.', - 'missing_definition' => "Formulário não contém um campo ':field'.", + 'missing_id' => 'O ID do registro não foi fornecido', + 'missing_model' => 'Formulário utilizado na classe :class não tem um model definido.', + 'missing_definition' => 'Formulário não contém um campo ":field".', 'not_found' => 'Nenhum registro encontrado com o ID :id', 'action_confirm' => 'Você tem certeza?', 'create' => 'Criar', @@ -179,7 +179,7 @@ return [ 'ok' => 'Ok', 'or' => 'ou', 'confirm_tab_close' => 'Tem certeza que deseja fechar essa aba? As alterações que não foram salvas serão perdidas', - 'behavior_not_ready' => 'O formulário não foi inicializado. Confira se você chamou initForm() no seu controlador.', + 'behavior_not_ready' => 'O formulário não foi inicializado. Confira se você chamou initForm() no controller.', 'preview_no_files_message' => 'Os arquivos não foram carregados', 'select' => 'Selecionar', 'select_all' => 'todos', @@ -188,55 +188,55 @@ return [ 'insert_row' => 'Inserir linha', 'delete_row' => 'Excluir linha', 'concurrency_file_changed_title' => 'O arquivo foi alterado', - 'concurrency_file_changed_description' => "O arquivo que você está editando foi alterado por outro usuário. Você pode recarregar o arquivo e perder suas alterações ou substituir o arquivo." + 'concurrency_file_changed_description' => 'O arquivo que você está editando foi alterado em disco. Você pode recarregá-lo e perder suas alterações ou sobrescrever o arquivo do disco.', ], 'relation' => [ - 'missing_config' => "Comportamento de relação não tem qualquer configuração ':config'.", - 'missing_definition' => "Relacionamento não contém uma definição para ':field'.", - 'missing_model' => "Relacionamento utilizado na classe :class não possui um modelo definido.", - 'invalid_action_single' => "Essa ação não pode ser realizada num relacionamento singular.", - 'invalid_action_multi' => "Essa ação não pode ser realizada num relacionamento múltiplo.", - 'help' => "Clique em um item para adicionar", - 'related_data' => "Dados do :name relacionados", - 'add' => "Adicionar", - 'add_selected' => "Adicionar seleção", - 'add_a_new' => "Adicionar um(a) novo(a) :name", - 'link_selected' => "Vincular selecionado", - 'link_a_new' => "Vincular um novo :name", - 'cancel' => "Cancelar", - 'close' => "Fechar", - 'add_name' => "Adicionar :name", - 'create' => "Criar", - 'create_name' => "Criar :name", - 'update' => "Atualizar", - 'update_name' => "Atualizar :name", - 'preview' => "Visualizar", - 'preview_name' => "Visualizar :name", - 'remove' => "Remover", - 'remove_name' => "Remover :name", - 'delete' => "Excluir", - 'delete_name' => "Excluir :name", - 'delete_confirm' => "Você tem certeza?", - 'link' => "Vincular", - 'link_name' => "Vincular :name", - 'unlink' => "Desvincular", - 'unlink_name' => "Desvincular :name", - 'unlink_confirm' => "Você tem certeza?", + 'missing_config' => 'Comportamento relation não tem uma configuração para ":config".', + 'missing_definition' => 'Comportamento relation não contém uma definição para ":field".', + 'missing_model' => 'Comportamento relation utilizado na classe :class não possui um model definido.', + 'invalid_action_single' => 'Essa ação não pode ser realizada num relacionamento singular.', + 'invalid_action_multi' => 'Essa ação não pode ser realizada num relacionamento múltiplo.', + 'help' => 'Clique em um item para adicionar', + 'related_data' => 'Dados de :name relacionado', + 'add' => 'Adicionar', + 'add_selected' => 'Adicionar seleção', + 'add_a_new' => 'Adicionar um(a) novo(a) :name', + 'link_selected' => 'Vincular selecionado', + 'link_a_new' => 'Vincular um novo :name', + 'cancel' => 'Cancelar', + 'close' => 'Fechar', + 'add_name' => 'Adicionar :name', + 'create' => 'Criar', + 'create_name' => 'Criar :name', + 'update' => 'Atualizar', + 'update_name' => 'Atualizar :name', + 'preview' => 'Visualizar', + 'preview_name' => 'Visualizar :name', + 'remove' => 'Remover', + 'remove_name' => 'Remover :name', + 'delete' => 'Excluir', + 'delete_name' => 'Excluir :name', + 'delete_confirm' => 'Você tem certeza?', + 'link' => 'Vincular', + 'link_name' => 'Vincular :name', + 'unlink' => 'Desvincular', + 'unlink_name' => 'Desvincular :name', + 'unlink_confirm' => 'Você tem certeza?', ], 'model' => [ - 'name' => "Modelo", - 'not_found' => "Modelo ':class' com ID :id não foi encontrado", - 'missing_id' => "ID do registro não especificado.", - 'missing_relation' => "Modelo ':class' não contém uma definição para o relacionamento ':relation'.", - 'missing_method' => "Modelo ':class' não contém o método ':method'.", - 'invalid_class' => "Modelo :model utilizado na classe :class não é válido. É necessário herdar a classe \Model.", - 'mass_assignment_failed' => "Mass assignment failed for Model attribute ':attribute'.", + 'name' => 'Model', + 'not_found' => 'Model ":class" com ID :id não foi encontrado', + 'missing_id' => 'ID do registro não especificado.', + 'missing_relation' => 'Model ":class" não contém uma definição para o relacionamento ":relation".', + 'missing_method' => 'Model ":class" não contém o método ":method".', + 'invalid_class' => 'Model :model utilizado na classe :class não é válido. É necessário herdar a classe \Model.', + 'mass_assignment_failed' => 'Falha na atribuição em massa do atributo ":attribute" do Model.', ], 'warnings' => [ 'tips' => 'Dicas de configuração do sistema', - 'tips_description' => 'Há questões que você precisa prestar atenção, a fim de configurar o sistema corretamente.', - 'permissions' => 'Diretório :name ou em seus subdiretórios não é gravável para o PHP. Por favor, defina permissões para o servidor neste diretório correspondente.', - 'extension' => 'A extenção PHP :name não está instalada. Por favor, instale esta biblioteca para ativar a extensão.' + 'tips_description' => 'Há itens que demandam atenção para configurar o sistema corretamente.', + 'permissions' => 'Diretório :name ou seus subdiretórios não são graváveis pelo PHP. Por favor, defina permissões de escrita para o servidor neste diretório.', + 'extension' => 'A extensão PHP :name não está instalada. Por favor, instale esta biblioteca para ativar a extensão.', ], 'editor' => [ 'menu_label' => 'Definições do Editor', @@ -260,30 +260,30 @@ return [ ], 'myaccount' => [ 'menu_label' => 'Minha Conta', - 'menu_description' => 'Atualize os detalhes da sua conta, como nome, endereço de e-mail e senha.', + 'menu_description' => 'Atualizar detalhes da sua conta, como nome, e-mail e senha.', 'menu_keywords' => 'login de segurança' ], 'branding' => [ - 'menu_label' => 'Personalize back-end', - 'menu_description' => 'Personalize a área de administração, tais como nome, cores e logo.', + 'menu_label' => 'Personalização', + 'menu_description' => 'Personalizar detalhes da área administrativa, tais como título, cores e logo.', 'brand' => 'Marca', 'logo' => 'Logo', - 'logo_description' => 'Fazer upload de um logo personalizada para usar no back-end.', + 'logo_description' => 'Fazer upload de uma logo para usar na área administrativa.', 'app_name' => 'Nome do Aplicativo', - 'app_name_description' => 'Este nome é mostrado no título da área no back-end.', + 'app_name_description' => 'Este nome é mostrado no título da área administrativa.', 'app_tagline' => 'Slogan do Aplicativo', - 'app_tagline_description' => 'Esta frase é mostrada na tela de login do back-end.', + 'app_tagline_description' => 'Esta frase é mostrada na tela de login administrativo.', 'colors' => 'Cores', 'primary_light' => 'Primária (Clara)', 'primary_dark' => 'Primária (Escura)', 'secondary_light' => 'Secundária (Clara)', 'secondary_dark' => 'Secundária (Escura)', 'styles' => 'Estilos', - 'custom_stylesheet' => 'Personalização do estilo CSS' + 'custom_stylesheet' => 'CSS customizado', ], 'backend_preferences' => [ 'menu_label' => 'Preferências da Administração', - 'menu_description' => 'Gerencie as preferências de idiomas e aparência da administração.', + 'menu_description' => 'Gerenciar idiomas e aparência da administração.', 'locale' => 'Idioma', 'locale_comment' => 'Selecione o idioma de sua preferência.', ], @@ -294,11 +294,11 @@ return [ 'created_at' => 'Data & Hora', 'login' => 'Login', 'ip_address' => 'Endereço IP', - 'first_name' => 'Primeiro Nome', + 'first_name' => 'Nome', 'last_name' => 'Sobrenome', 'email' => 'E-mail', ], 'filter' => [ - 'all' => 'todos' - ] + 'all' => 'todos', + ], ]; diff --git a/modules/cms/lang/pt-br/lang.php b/modules/cms/lang/pt-br/lang.php index c869d45d8..889df2644 100644 --- a/modules/cms/lang/pt-br/lang.php +++ b/modules/cms/lang/pt-br/lang.php @@ -2,84 +2,144 @@ return [ 'cms_object' => [ - 'invalid_file' => 'Nome de arquivo inválido: :name. Os nomes de arquivos podem conter apenas símbolos alfa-numéricos, sublinhados, traços e pontos. Veja alguns exemplos de nomes de arquivos corretos: page.htm, página subdiretório/página', + 'invalid_file' => 'Nome de arquivo inválido: ":name". Os nomes de arquivos podem conter apenas letras, números, sublinhados, traços e pontos. Veja alguns exemplos de nomes de arquivos corretos: pagina.htm, pagina, subdiretorio/pagina', 'invalid_property' => 'A propriedade ":nome" não pode ser definida', 'file_already_exists' => 'Arquivo ":name" já existe.', - 'error_saving' => 'Erro ao salvar arquivo ":name".', - 'error_creating_directory' => 'Erro ao criar o diretório :name', - 'invalid_file_extension'=>'Extenção de arquivo inválido: :invalid. Extenções válidas: :allowed.', - 'error_deleting' => 'Erro ao excluir o arquivo de modelo ":name".', - 'delete_success' => 'Modelos apagados com sucesso: :count.', - 'file_name_required' => 'O campo Nome do Arquivo é necessária.' + 'error_saving' => 'Erro ao salvar arquivo ":name". Verifique as permissões de escrita.', + 'error_creating_directory' => 'Erro ao criar o diretório :name. Verifique as permissões de escrita.', + 'invalid_file_extension'=>'Extensão de arquivo inválida: :invalid. Extensões válidas: :allowed.', + 'error_deleting' => 'Erro ao excluir o arquivo de template ":name". Verifique as permissões de escrita.', + 'delete_success' => 'Templates apagados com sucesso: :count.', + 'file_name_required' => 'O campo de Nome do Arquivo é necessário.', ], 'theme' => [ + 'not_found_name' => 'O tema ":name" não foi encontrado.', 'active' => [ - 'not_set' => "O tema ativo não foi definido.", - 'not_found' => "O tema ativo não foi encontrado.", + 'not_set' => 'O tema ativo não foi definido.', + 'not_found' => 'O tema ativo não foi encontrado.', ], 'edit' => [ - 'not_set' => "O tema de edição não foi definido.", - 'not_found' => "O tema de edição não foi encontrado.", - 'not_match' => "O objeto que você está tentando acessar não pertence ao tema que está sendo editado. Por favor, recarregue a página." + 'not_set' => 'O tema de edição não foi definido.', + 'not_found' => 'O tema de edição não foi encontrado.', + 'not_match' => 'O objeto que você está tentando acessar não pertence ao tema que está sendo editado. Por favor, recarregue a página.', ], 'settings_menu' => 'Temas', - 'settings_menu_description' => 'Veja a lista de temas instalados.', - 'find_more_themes' => 'Encontrar mais temas.', + 'settings_menu_description' => 'Veja a lista de temas instalados e selecione o tema ativo.', + 'name_label' => 'Nome', + 'name_create_placeholder' => 'Nome do novo tema', + 'author_label' => 'Autor', + 'author_placeholder' => 'Nome do autor', + 'description_label' => 'Descrição', + 'description_placeholder' => 'Descrição do tema', + 'homepage_label' => 'Site', + 'homepage_placeholder' => 'URL do site', + 'code_label' => 'Código', + 'code_placeholder' => 'Um código exclusivo para esse tema a ser usado para distribuição', + 'dir_name_label' => 'Nome do diretório', + 'dir_name_create_label' => 'O diretório-alvo de temas', + 'theme_label' => 'Tema', 'activate_button' => 'Ativar', - 'active_button' => 'Ativar', + 'active_button' => 'Ativado', + 'customize_button' => 'Customizar', + 'duplicate_button' => 'Duplicar', + 'duplicate_title' => 'Duplicar tema', + 'duplicate_theme_success' => 'Tema duplicado com sucesso!', + 'manage_button' => 'Gerenciar', + 'manage_title' => 'Gerenciar tema', + 'edit_properties_title' => 'Tema', + 'edit_properties_button' => 'Editar propriedades', + 'save_properties' => 'Salvar propriedades', + 'import_button' => 'Importar', + 'import_title' => 'Importar tema', + 'import_theme_success' => 'Tema importado com sucesso!', + 'import_uploaded_file' => 'Arquivo de tema', + 'import_overwrite_label' => 'Sobrescrever arquivos existentes', + 'import_overwrite_comment' => 'Desmarque para importar apenas arquivos novos', + 'import_folders_label' => 'Pastas', + 'import_folders_comment' => 'Por favor selecione as pastas de temas que deseja importar', + 'export_button' => 'Exportar', + 'export_title' => 'Exportar tema', + 'export_folders_label' => 'Pastas', + 'export_folders_comment' => 'Por favor selecione as pastas de temas que deseja exportar', + 'delete_button' => 'Deletar', + 'delete_confirm' => 'Tem certeza que deseja deletar este tema? Isto não pode ser revertido!', + 'delete_active_theme_failed' => 'Não é possível deletar o tema ativo, torne outro tema ativo antes.', + 'delete_theme_success' => 'Tema deletado com sucesso!', + 'create_title' => 'Criar tema', + 'create_button' => 'Criar', + 'create_new_blank_theme' => 'Criar novo tema em branco', + 'create_theme_success' => 'Tema criado com sucesso!', + 'create_theme_required_name' => 'Por favor forneça um nome para o tema.', + 'new_directory_name_label' => 'Diretório do tema', + 'new_directory_name_comment' => 'Forneça um novo nome de diretório para o tema duplicado.', + 'dir_name_invalid' => 'O nome só pode conter letras, números, e os símbolos: _-', + 'dir_name_taken' => 'Diretório de tema escolhido já existe.', + 'find_more_themes' => 'Encontrar mais temas.', + 'return' => 'Retornar à lista de temas', + ], + 'maintenance' => [ + 'settings_menu' => 'Modo de manutenção', + 'settings_menu_description' => 'Configurar modo de manutenção e a página exibida.', + 'is_enabled' => 'Ativar modo de manutenção', + 'is_enabled_comment' => 'Quando ativado visitantes do site vão ver a página selecionada.', ], 'page' => [ + 'not_found_name' => 'A página ":name" não foi encontrada', 'not_found' => [ - 'label' => "Página não encontrada", - 'help' => "A página solicitada não pode ser encontrada.", + 'label' => 'Página não encontrada', + 'help' => 'A página solicitada não pode ser encontrada.', ], 'custom_error' => [ - 'label' => "Erro na página", - 'help' => "Lamentamos, mas algo deu errado e que a página não pode ser exibida.", + 'label' => 'Erro na página', + 'help' => 'Lamentamos, mas algo deu errado e que a página não pode ser exibida.', ], 'menu_label' => 'Páginas', - 'no_list_records' => 'Nenhuma página foi encontradas', + 'unsaved_label' => 'Página(s) não salva(s)', + 'no_list_records' => 'Nenhuma página encontrada', 'new' => 'Nova página', - 'invalid_url' => 'Formato de URL inválido. O URL deve começar com o símbolo de barra e pode conter dígitos, letras latinas e os seguintes símbolos: _-[]:?|/+*^$', - 'delete_confirm_multiple' => 'Você realmente quer excluir as páginas selecionadas?', - 'delete_confirm_single' => 'Você realmente quer excluir esta página?', - 'no_layout' => '-- sem layout --' + 'invalid_url' => 'Formato de URL inválido. A URL deve começar com uma barra e pode conter letras, números e os símbolos: _-[]:?|/+*^$', + 'delete_confirm_multiple' => 'Você realmente deseja excluir as páginas selecionadas?', + 'delete_confirm_single' => 'Você realmente deseja excluir esta página?', + 'no_layout' => '-- sem layout --', ], 'layout' => [ - 'not_found_name' => "O layout ':name' não foi encontrado", + 'not_found_name' => 'O layout ":name" não foi encontrado', 'menu_label' => 'Layouts', - 'no_list_records' => 'Nenhum layout foi encontrado', + 'unsaved_label' => 'Layout(s) não salvo(s)', + 'no_list_records' => 'Nenhum layout encontrado', 'new' => 'Novo layout', 'delete_confirm_multiple' => 'Você realmente deseja excluir os layouts selecionados?', - 'delete_confirm_single' => 'Você realmente quer excluir este layout?' + 'delete_confirm_single' => 'Você realmente deseja excluir este layout?', ], 'partial' => [ - 'not_found_name' => "O bloco ':name' não foi encontrado.", - 'invalid_name' => "Nome bloco inválido: :name.", + 'not_found_name' => 'O bloco ":name" não foi encontrado.', + 'invalid_name' => 'Nome de bloco inválido: :name.', 'menu_label' => 'Blocos', - 'no_list_records' => 'Nenhum bloco foi encontrado', - 'delete_confirm_multiple' => 'Você realmente quer apagar os blocos selecionados?', - 'delete_confirm_single' => 'Você realmente quer apagar este bloco?', - 'new' => 'Novo bloco' + 'unsaved_label' => 'Bloco(s) não salvo(s)', + 'no_list_records' => 'Nenhum bloco encontrado', + 'delete_confirm_multiple' => 'Você realmente deseja apagar os blocos selecionados?', + 'delete_confirm_single' => 'Você realmente deseja apagar este bloco?', + 'new' => 'Novo bloco', ], 'content' => [ - 'not_found_name' => "O arquivo de conteúdo ':name' não foi encontrado.", + 'not_found_name' => 'O arquivo de conteúdo ":name" não foi encontrado.', 'menu_label' => 'Conteúdo', - 'no_list_records' => 'Nenhum arquivo de conteúdo foi encontrado', - 'delete_confirm_multiple' => 'Você realmente quer apagar arquivos de conteúdo selecionados ou diretórios?', - 'delete_confirm_single' => 'Você realmente quer apagar este arquivo de conteúdo?', - 'new' => 'Novo arquivo de conteúdo' + 'unsaved_label' => 'Conteúdo não salvo', + 'no_list_records' => 'Nenhum arquivo de conteúdo encontrado', + 'delete_confirm_multiple' => 'Você realmente deseja apagar arquivos ou diretórios de conteúdo selecionados?', + 'delete_confirm_single' => 'Você realmente deseja apagar este arquivo de conteúdo?', + 'new' => 'Novo arquivo de conteúdo', ], 'ajax_handler' => [ - 'invalid_name' => "O nome do Manipulador AJAX é inválido: :name.", - 'not_found' => "Manipulador AJAX ':name' não foi encontrado.", + 'invalid_name' => 'O nome do manipulador AJAX é inválido: :name.', + 'not_found' => 'Manipulador AJAX ":name" não encontrado.', ], 'cms' => [ - 'menu_label' => "Design" + 'menu_label' => 'CMS', ], 'sidebar' => [ 'add' => 'Adicionar', - 'search' => 'Buscar...' + 'search' => 'Buscar...', ], 'editor' => [ 'settings' => 'Configurações', @@ -89,7 +149,7 @@ return [ 'filename' => 'Nome do Arquivo', 'layout' => 'Layout', 'description' => 'Descrição', - 'preview' => 'Pré-visualização', + 'preview' => 'Visualizar', 'meta' => 'Meta', 'meta_title' => 'Meta Título', 'meta_description' => 'Meta Descrição', @@ -99,10 +159,11 @@ return [ 'hidden' => 'Oculta', 'hidden_comment' => 'Páginas ocultas são acessíveis somente para administradores.', 'enter_fullscreen' => 'Entrar no modo de tela cheia', - 'exit_fullscreen' => 'Sair do modo de tela cheia' + 'exit_fullscreen' => 'Sair do modo de tela cheia', ], 'asset' => [ - 'menu_label' => "Arquivos", + 'menu_label' => 'Arquivos', + 'unsaved_label' => 'Arquivo(s) não salvo(s)', 'drop_down_add_title' => 'Adicionar...', 'drop_down_operation_title' => 'Ação...', 'upload_files' => 'Enviar arquivo(s)', @@ -117,54 +178,55 @@ return [ 'new' => 'Novo arquivo', 'rename_popup_title' => 'Renomear', 'rename_new_name' => 'Novo nome', - 'invalid_path' => 'O caminho pode conter apenas dígitos, letras latinas, espaços e os seguintes símbolos: ._-/', + 'invalid_path' => 'O caminho pode conter apenas letras, números, espaços e os símbolos: ._-/', 'error_deleting_file' => 'Erro ao excluir arquivo :name.', 'error_deleting_dir_not_empty' => 'Erro ao excluir diretório :name. O diretório não está vazio.', 'error_deleting_dir' => 'Erro ao excluir diretório :name.', - 'invalid_name' => 'O nome pode conter apenas dígitos, letras latinas, espaços e os seguintes símbolos: ._-', - 'original_not_found' => 'O arquivo original ou diretório não foi encontrado', - 'already_exists' => 'Arquivo ou diretório com este nome já existe', + 'invalid_name' => 'O nome pode conter apenas letras, números, espaços e os símbolos: ._-', + 'original_not_found' => 'Arquivo ou diretório original não encontrado', + 'already_exists' => 'Um arquivo ou diretório com este nome já existe', 'error_renaming' => 'Erro ao renomear o arquivo ou diretório', - 'name_cant_be_empty' => 'O nome não pode ser vazio', - 'too_large' => 'O arquivo enviado é muito grande. O tamanho máximo de envio permitido é :max_size', + 'name_cant_be_empty' => 'O nome não pode estar vazio', + 'too_large' => 'O arquivo enviado é muito grande. O tamanho máximo permitido é :max_size', 'type_not_allowed' => 'Apenas os seguintes tipos de arquivos são permitidos: :allowed_types', 'file_not_valid' => 'O arquivo não é válido', - 'error_uploading_file' => 'Erro ao enviar arquivo ":name": :error', - 'move_please_select' => 'por favor, selecione', + 'error_uploading_file' => 'Error uploading file ":name": :error', + 'move_please_select' => 'por favor selecione', 'move_destination' => 'Diretório de destino', - 'move_popup_title' => 'Mover arquivo', + 'move_popup_title' => 'Mover arquivos', 'move_button' => 'Mover', - 'selected_files_not_found' => 'Os arquivos selecionados não foram encontrados', + 'selected_files_not_found' => 'Arquivos selecionados não encontrados', 'select_destination_dir' => 'Por favor, selecione um diretório de destino', - 'destination_not_found' => 'Diretório de destino não foi encontrado', + 'destination_not_found' => 'Diretório de destino não encontrado', 'error_moving_file' => 'Erro ao mover arquivo :file', 'error_moving_directory' => 'Erro ao mover diretório :dir', - 'error_deleting_directory' => 'Erro ao excluir o diretório :dir', - 'path' => 'Caminho' + 'error_deleting_directory' => 'Erro ao excluir o diretório original :dir', + 'path' => 'Caminho', ], 'component' => [ - 'menu_label' => "Componentes", - 'unnamed' => "Não nomeado", - 'no_description' => "Sem descrição fornecida", - 'alias' => "Pseudônimo", - 'alias_description' => "Um nome exclusivo dado a este componente quando usá-lo na página ou layout de código.", - 'validation_message' => "Aliases de componentes são necessários e podem conter apenas símbolos latinos, dígitos e sublinhados. Os aliases deve começar com um símbolo Latina.", - 'invalid_request' => "O modelo não pode ser salvo por causa de dados de componentes inválidos.", - 'no_records' => 'Nenhum dos componentes foi encontrado', - 'not_found' => "O componente ':name' não foi encontrado.", - 'method_not_found' => "o componente ':name' não contém um método ':method'.", + 'menu_label' => 'Componentes', + 'unnamed' => 'Sem nome', + 'no_description' => 'Nenhuma descrição fornecida', + 'alias' => 'Alias', + 'alias_description' => 'Um nome exclusivo dado a este componente quando usá-lo no código de uma página ou layout.', + 'validation_message' => 'Aliases de componentes são necessários e podem conter letras, números e sublinhados. Os aliases deve começar com uma letra.', + 'invalid_request' => 'O template não pode ser salvo devido a dados inválidos nos componentes.', + 'no_records' => 'Nenhum componente encontrado', + 'not_found' => 'O componente ":name" não foi encontrado.', + 'method_not_found' => 'O componente ":name" não tem um método ":method".', ], 'template' => [ - 'invalid_type' => "Tipo de modelo desconhecido.", - 'not_found' => "O modelo solicitado não foi encontrado.", - 'saved'=> "O modelo foi salvo com sucesso." + 'invalid_type' => 'Tipo de template desconhecido.', + 'not_found' => 'O template solicitado não foi encontrado.', + 'saved'=> 'O modelo foi salvo com sucesso.', ], 'permissions' => [ + 'name' => 'Cms', 'manage_content' => 'Gerenciar conteúdo', 'manage_assets' => 'Gerenciar arquivos', 'manage_pages' => 'Gerenciar páginas', 'manage_layouts' => 'Gerenciar layouts', 'manage_partials' => 'Gerenciar blocos', - 'manage_themes' => 'Gerenciar temas' - ] + 'manage_themes' => 'Gerenciar temas', + ], ]; diff --git a/modules/system/lang/en/lang.php b/modules/system/lang/en/lang.php index 82cf5aec1..af7cd6372 100644 --- a/modules/system/lang/en/lang.php +++ b/modules/system/lang/en/lang.php @@ -108,7 +108,6 @@ return [ 'sender_name' => 'Sender Name', 'sender_email' => 'Sender Email', 'php_mail' => 'PHP mail', - 'sendmail' => 'Sendmail', 'smtp' => 'SMTP', 'smtp_address' => 'SMTP Address', 'smtp_authorization' => 'SMTP authorization required', diff --git a/modules/system/lang/pt-br/lang.php b/modules/system/lang/pt-br/lang.php index 8b81d1c05..1ddfab577 100644 --- a/modules/system/lang/pt-br/lang.php +++ b/modules/system/lang/pt-br/lang.php @@ -7,32 +7,38 @@ return [ ], 'locale' => [ 'en' => 'Inglês', - 'nl' => 'Holandês', - 'ja' => 'Japonês', - 'se' => 'Sueco', - 'tr' => 'Turco', 'de' => 'Alemão', - 'ru' => 'Russo', + 'es' => 'Espanhol', + 'es-ar' => 'Espanhol da Argentina', + 'fa' => 'Persa', 'fr' => 'Francês', + 'hu' => 'Húngaro', + 'id' => 'Indonésio', 'it' => 'Italiano', - 'ro' => 'Romano', + 'ja' => 'Japonês', + 'nl' => 'Holandês ', + 'pl' => 'Polonês', 'pt-br' => 'Português do Brasil', - 'fa' => 'Persian', + 'ro' => 'Romeno', + 'ru' => 'Russo', + 'se' => 'Sueco', + 'sk' => 'Eslovaco', + 'tr' => 'Turco', ], 'directory' => [ - 'create_fail' => "Não é possível criar o diretório: :name", + 'create_fail' => 'Não é possível criar o diretório: :name', ], 'file' => [ - 'create_fail' => "Não é possível criar o arquivo: :name", + 'create_fail' => 'Não é possível criar o arquivo: :name', ], 'combiner' => [ - 'not_found' => "O arquivo combinador ':name' não foi encontrado.", + 'not_found' => 'O arquivo combinador ":name" não foi encontrado.', ], 'system' => [ 'name' => 'Sistema', 'menu_label' => 'Sistema', 'categories' => [ - 'cms' => 'Temas', + 'cms' => 'CMS', 'misc' => 'Diversos', 'logs' => 'Registros', 'mail' => 'E-mail', @@ -44,13 +50,13 @@ return [ 'events' => 'Eventos', 'customers' => 'Clientes', 'my_settings' => 'Configurações', - ], + ] ], 'plugin' => [ - 'unnamed' => 'Plugin não nomeado', + 'unnamed' => 'Plugin sem nome', 'name' => [ 'label' => 'Nome do Plugin', - 'help' => 'Nome do plugin pelo seu código único. Por exemplo, RainLab.Blog', + 'help' => 'Nomeie o plugin pelo seu código exclusivo. Por exemplo, RainLab.Blog', ], ], 'plugins' => [ @@ -63,13 +69,13 @@ return [ 'disabled_help' => 'Plugins que estão desabilitados são ignorados pela aplicação.', 'selected_amount' => 'Plugins selecionados: :amount', 'remove_confirm' => 'Você tem certeza?', - 'remove_success' => "Plugins removidos com sucesso do sistema.", + 'remove_success' => 'Plugins removidos com sucesso do sistema.', 'refresh_confirm' => 'Você tem certeza?', - 'refresh_success' => "Plugins atualizados com sucesso.", + 'refresh_success' => 'Plugins atualizados com sucesso.', 'disable_confirm' => 'Você tem certeza?', - 'disable_success' => "Plugins desabilitados com sucesso.", - 'enable_success' => "Plugins habilitados com sucesso.", - 'unknown_plugin' => "Plugin removido do sistema de arquivos.", + 'disable_success' => 'Plugins desabilitados com sucesso.', + 'enable_success' => 'Plugins habilitados com sucesso.', + 'unknown_plugin' => 'Plugin removido do sistema de arquivos.', ], 'project' => [ 'name' => 'Projeto', @@ -79,26 +85,29 @@ return [ 'none' => 'Nenhum', 'id' => [ 'label' => 'ID do Projeto', - 'help' => 'Como encontrar o ID do seu projeto?', - 'missing' => 'Por favor, especifique um ID de Projeto para usar.', + 'help' => 'Como encontrar o ID do seu projeto', + 'missing' => 'Por favor, forneça um ID de projeto para usar.', ], - 'detach_confirm' => 'Tem certeza de que deseja desanexar este projeto?', + 'detach_confirm' => 'Tem certeza que deseja desanexar este projeto?', 'unbind_success' => 'Projeto desanexado com sucesso.', ], 'settings' => [ 'menu_label' => 'Configurações', - 'missing_model' => 'A página de configurações está faltando uma definição de modelo.', + 'not_found' => 'Impossível encontrar as configurações solicitadas.', + 'missing_model' => 'Falta uma definição de model na página de configurações.', 'update_success' => 'Configurações para :name foram atualizados com sucesso.', 'return' => 'Retornar para as configurações do sistema', - 'search' => 'Buscar' + 'search' => 'Buscar', ], 'mail' => [ + 'log_file' => 'Arquivo de registro', 'menu_label' => 'Configurações de E-mail', 'menu_description' => 'Gerenciar configurações de e-mail.', 'general' => 'Geral', 'method' => 'Método de Envio', 'sender_name' => 'Nome do Remetente', 'sender_email' => 'E-mail do Remetente', + 'php_mail' => 'PHP mail', 'smtp' => 'SMTP', 'smtp_address' => 'Endereço SMTP', 'smtp_authorization' => 'Autenticação SMTP obrigatória', @@ -110,21 +119,29 @@ return [ 'sendmail' => 'Sendmail', 'sendmail_path' => 'Caminho do Sendmail', 'sendmail_path_comment' => 'Por favor, especifique o caminho do programa sendmail.', + 'mailgun' => 'Mailgun', + 'mailgun_domain' => 'Domínio do Mailgun', + 'mailgun_domain_comment' => 'Por favor, forneça o domínio do Mailgun.', + 'mailgun_secret' => 'Mailgun Secret', + 'mailgun_secret_comment' => 'Forneça sua chave de API do Mailgun.', + 'mandrill' => 'Mandrill', + 'mandrill_secret' => 'Mandrill Secret', + 'mandrill_secret_comment' => 'Forneça sua chave de API do Mandrill', ], 'mail_templates' => [ - 'menu_label' => 'Modelos de E-mail', - 'menu_description' => 'Modificar os modelos de e-mail que são enviados para usuários e administradores.', - 'new_template' => 'Novo modelo', + 'menu_label' => 'Templates de E-mail', + 'menu_description' => 'Modificar os templates dos e-mails que são enviados para usuários e administradores.', + 'new_template' => 'Novo template', 'new_layout' => 'Novo layout', - 'template' => 'Modelo', - 'templates' => 'Modelos', + 'template' => 'Template', + 'templates' => 'Templates', 'menu_layouts_label' => 'Layouts de E-mail', 'layout' => 'Layout', 'layouts' => 'Layouts', 'name' => 'Nome', - 'name_comment' => 'Nome exclusivo usado para se referir à este modelo', + 'name_comment' => 'Nome exclusivo usado para se referir a este template', 'code' => 'Código', - 'code_comment' => 'Código único usado para se referir à este modelo', + 'code_comment' => 'Código exclusivo usado para se referir a este template', 'subject' => 'Assunto', 'subject_comment' => 'Assunto da mensagem', 'description' => 'Descrição', @@ -133,13 +150,13 @@ return [ 'content_text' => 'Texto Simples', 'test_send' => 'Enviar mensagem de teste', 'test_success' => 'Mensagem de teste enviada com sucesso.', - 'return' => 'Retornar à lista de modelos' + 'return' => 'Retornar à lista de templates' ], 'install' => [ 'project_label' => 'Anexar ao projeto', 'plugin_label' => 'Instalar plugin', 'missing_plugin_name' => 'Por favor, especifique um nome de plugin para instalar.', - 'install_completing' => 'Finalizando processo de instalação.', + 'install_completing' => 'Finalizando processo de instalação', 'install_success' => 'O plugin foi instalado com sucesso.', ], 'updates' => [ @@ -158,7 +175,9 @@ return [ 'core_build_new' => 'Compilação :build', 'core_build_new_help' => 'Última versão está disponível.', 'core_downloading' => 'Baixando arquivos do aplicativo', - 'core_extracting' => 'Desempacotando arquivos de aplicativos', + 'core_extracting' => 'Desempacotando arquivos do aplicativo', + 'plugins' => 'Plugins', + 'disabled' => 'Desabilitados', 'plugin_downloading' => 'Baixando o plugin: :name', 'plugin_extracting' => 'Desempacotando o plugin: :name', 'plugin_version_none' => 'Novo plugin', @@ -171,43 +190,43 @@ return [ 'update_label' => 'Atualizar o software', 'update_completing' => 'Finalizando processo de atualização', 'update_loading' => 'Carregando atualizações disponíveis...', - 'update_success' => 'O processo de atualização foi realizada com sucesso.', + 'update_success' => 'O processo de atualização foi realizado com sucesso.', 'update_failed_label' => 'Falha na atualização', 'force_label' => 'Forçar atualização', 'found' => [ - 'label' => 'Encontrado novas atualizações!', + 'label' => 'Atualizações encontradas!', 'help' => 'Clique Atualizar o software para iniciar o processo de atualização.', ], 'none' => [ - 'label' => 'Não há atualizações', + 'label' => 'Nenhuma atualização', 'help' => 'Não há novas atualizações.', ], ], 'server' => [ - 'connect_error' => 'Erro ao conectar-se ao servidor.', + 'connect_error' => 'Erro ao conectar-se com o servidor.', 'response_not_found' => 'O servidor de atualização não pôde ser encontrado.', 'response_invalid' => 'Resposta inválida do servidor.', - 'response_empty' => 'Resposta vazia a partir do servidor.', + 'response_empty' => 'Resposta vazia do servidor.', 'file_error' => 'Servidor não conseguiu entregar o pacote.', 'file_corrupt' => 'Arquivo do servidor está corrompido.', ], 'behavior' => [ - 'missing_property' => 'Classe :class deve definir a $:property imóvel usado por:behavior comportamento.', + 'missing_property' => 'Classe :class deve definir a propriedade $:property usada pelo :behavior behavior.', ], 'config' => [ - 'not_found' => 'Não foi possível localizar arquivos de configuração :file definido para :location.', + 'not_found' => 'Não foi possível localizar o arquivo de configuração :file definido para :location.', 'required' => 'Configuração usada em :location deve fornecer um valor :property.', ], 'zip' => [ - 'extract_failed' => "Não foi possível extrair arquivo core ':file'.", + 'extract_failed' => 'Não foi possível extrair arquivo do core ":file".', ], 'event_log' => [ - 'hint' => 'Este registro mostra a lista dos potenciais erros que ocorreram na aplicação, assim como as exceções e informações de depuração.', + 'hint' => 'Este registro mostra a lista dos potenciais erros que ocorreram na aplicação, como exceções e informações de depuração.', 'menu_label' => 'Registro de Eventos', - 'menu_description' => 'Visualize as mensagens do sistema, com o tempo de registro e detalhes.', - 'empty_link' => 'Registro de eventos vazio', - 'empty_loading' => 'Limpando registro de eventos...', - 'empty_success' => 'Registro de eventos limpo com sucesso.', + 'menu_description' => 'Visualize as mensagens do sistema, com horário e detalhes.', + 'empty_link' => 'Esvaziar registro de eventos', + 'empty_loading' => 'Esvaziando registro de eventos...', + 'empty_success' => 'Registro de eventos esvaziado com sucesso.', 'return_link' => 'Retornar ao registro de eventos', 'id' => 'ID', 'id_label' => 'ID do Evento', @@ -216,25 +235,27 @@ return [ 'level' => 'Nível', ], 'request_log' => [ - 'hint' => 'Este registro mostra a lista de requisições do navegador que requerem atenção. Por exemplo, se um usuário acessar uma página inexistente, será armazenado o registro nesta lista.', + 'hint' => 'Este registro mostra uma lista de requisições que requerem atenção. Por exemplo, se um usuário solicitar uma página não encontrada, será registrado com o status 404.', 'menu_label' => 'Registro de Requisições', - 'menu_description' => 'Visualize requisições com problema na aplicação, como Página não encontrada (404).', - 'empty_link' => 'Registro de requisições vazio.', - 'empty_loading' => 'Limpando registro de requisições...', - 'empty_success' => 'Registro de requisições limpo com sucesso.', + 'menu_description' => 'Visualize requisições malsucedidas na aplicação, como Página não encontrada (404).', + 'empty_link' => 'Esvaziar registro de requisições.', + 'empty_loading' => 'Esvaziando registro de requisições...', + 'empty_success' => 'Registro de requisições esvaziado com sucesso.', 'return_link' => 'Retornar ao registro de requisições', 'id' => 'ID', - 'id_label' => 'ID', + 'id_label' => 'ID do registro', 'count' => 'Contador', - 'referer' => 'Referentes', + 'referer' => 'Referers', 'url' => 'URL', - 'status_code' => 'Código', + 'status_code' => 'Status', ], 'permissions' => [ + 'name' => 'System', 'manage_system_settings' => 'Gerenciar configurações do sistema', 'manage_software_updates' => 'Gerenciar atualizações', - 'manage_mail_templates' => 'Gerenciar modelos de e-mail', + 'manage_mail_templates' => 'Gerenciar templates de e-mail', + 'manage_mail_settings' => 'Gerenciar configurações de e-mail', 'manage_other_administrators' => 'Gerenciar outros administradores', - 'view_the_dashboard' => 'Visualizar o painel' - ] + 'view_the_dashboard' => 'Visualizar o painel', + ], ]; diff --git a/modules/system/lang/pt-br/validation.php b/modules/system/lang/pt-br/validation.php index 240107828..0efed9f40 100644 --- a/modules/system/lang/pt-br/validation.php +++ b/modules/system/lang/pt-br/validation.php @@ -1,6 +1,6 @@ "O :attribute deve ser aceito.", - "active_url" => "O :attribute não é uma URL válida.", - "after" => "O :attribute deve ser uma data após :date.", - "alpha" => "O :attribute só pode conter letras.", - "alpha_dash" => "O :attribute só pode conter letras, números e traços.", - "alpha_num" => "O :attribute só pode conter letras e números.", - "array" => "O :attribute deve ser uma matriz.", - "before" => "O :attribute deve ser uma data antes :date.", - "between" => array( - "numeric" => "O :attribute deve situar-se entre :min - :max.", - "file" => "O :attribute deve situar-se entre :min - :max kilobytes.", - "string" => "O :attribute deve situar-se entre :min - :max carácteres.", - "array" => "O :attribute tem de ter entre :min - :max itens.", - ), - "confirmed" => "O :attribute confirmação não corresponde.", - "date" => "O :attribute não é uma data válida.", - "date_format" => "O :attribute não coincide com o formato :format.", - "different" => "O :attribute e :other deve ser diferente.", - "digits" => "O :attribute deve ser :digits dígitos.", - "digits_between" => "O :attribute deve situar-se entre :min e :max dígitos.", - "email" => "O :attribute formato é inválido.", - "exists" => "O :attribute selecioado é inválido.", - "image" => "O :attribute deve ser uma imagem.", - "in" => "O :attribute selecioado é inválido.", - "integer" => "O :attribute deve ser um número inteiro.", - "ip" => "O :attribute deve ser um endereço IP válido.", - "max" => array( - "numeric" => "O :attribute não pode ser maior do que :max.", - "file" => "O :attribute não pode ser maior do que :max kilobytes.", - "string" => "O :attribute não pode ser maior do que :max carácteres.", - "array" => "O :attribute não podem ter mais do que :max itens.", - ), - "mimes" => "O :attribute deve ser um arquivo do tipo: :values.", - "min" => array( - "numeric" => "O :attribute deve ser de pelo menos :min.", - "file" => "O :attribute deve ser de pelo menos :min kilobytes.", - "string" => "O :attribute deve ser de pelo menos :min carácteres.", - "array" => "O :attribute deve ter pelo menos :min itens.", - ), - "not_in" => "O :attribute selecionado é inválido.", - "numeric" => "O :attribute deve ser um número.", - "regex" => "O :attribute formato é inválido.", - "required" => "O campo :attribute é obrigatório.", - "required_if" => "O campo :attribute é obrigatório quando :other é :value.", - "required_with" => "O campo :attribute é obrigatório quando :values está presente.", - "required_without" => "O campo :attribute é obrigatório quando :values não está presente.", - "same" => "O campo :attribute e :other devem corresponder.", - "size" => array( - "numeric" => "O :attribute deve ser :size.", - "file" => "O :attribute deve ser :size kilobytes.", - "string" => "O :attribute deve ser :size carácteres.", - "array" => "O :attribute deve conter :size itens.", - ), - "unique" => "O :attribute já foi utilizado.", - "url" => "O :attribute formato é inválido.", + 'accepted' => ':attribute deve ser aceito.', + 'active_url' => ':attribute não é uma URL válida.', + 'after' => ':attribute deve ser uma data após :date.', + 'alpha' => ':attribute só pode conter letras.', + 'alpha_dash' => ':attribute só pode conter letras, números e traços.', + 'alpha_num' => ':attribute só pode conter letras e números.', + 'array' => ':attribute deve ser uma matriz.', + 'before' => ':attribute deve ser uma data antes :date.', + 'between' => [ + 'numeric' => ':attribute deve situar-se entre :min e :max.', + 'file' => ':attribute deve ter entre :min e :max kilobytes.', + 'string' => ':attribute deve ter entre :min e :max caracteres.', + 'array' => ':attribute deve ter entre :min e :max itens.', + ], + 'confirmed' => 'A confirmação de :attribute não corresponde.', + 'date' => ':attribute não é uma data válida.', + 'date_format' => ':attribute não coincide com o formato :format.', + 'different' => ':attribute e :other devem ser diferentes.', + 'digits' => ':attribute deve ser :digits dígitos.', + 'digits_between' => ':attribute deve ter entre :min e :max dígitos.', + 'email' => 'Formato de :attribute é inválido.', + 'exists' => ':attribute selecionado é inválido.', + 'image' => ':attribute deve ser uma imagem.', + 'in' => ':attribute selecionado é inválido.', + 'integer' => ':attribute deve ser um número inteiro.', + 'ip' => ':attribute deve ser um endereço IP válido.', + 'max' => [ + 'numeric' => ':attribute não pode ser maior do que :max.', + 'file' => ':attribute não pode ser maior do que :max kilobytes.', + 'string' => ':attribute não pode ser maior do que :max caracteres.', + 'array' => ':attribute não pode ter mais que :max itens.', + ], + 'mimes' => ':attribute deve ser um arquivo do tipo: :values.', + 'min' => [ + 'numeric' => ':attribute deve ser no mínimo :min.', + 'file' => ':attribute deve ter pelo menos :min kilobytes.', + 'string' => ':attribute deve ter pelo menos :min caracteres.', + 'array' => ':attribute deve ter pelo menos :min itens.', + ], + 'not_in' => ':attribute selecionado é inválido.', + 'numeric' => ':attribute deve ser um número.', + 'regex' => 'Formato de :attribute é inválido.', + 'required' => 'O campo :attribute é obrigatório.', + 'required_if' => 'O campo :attribute é obrigatório quando :other é :value.', + 'required_with' => 'O campo :attribute é obrigatório quando :values está presente.', + 'required_without' => 'O campo :attribute é obrigatório quando :values não está presente.', + 'same' => 'O campo :attribute e :other devem corresponder.', + 'size' => [ + 'numeric' => ':attribute deve ser :size.', + 'file' => ':attribute deve ser :size kilobytes.', + 'string' => ':attribute deve ter :size caracteres.', + 'array' => ':attribute deve conter :size itens.', + ], + 'unique' => ':attribute já está sendo utilizado.', + 'url' => 'Formato de :attribute é inválido.', /* |-------------------------------------------------------------------------- @@ -75,12 +75,12 @@ return array( |-------------------------------------------------------------------------- | | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to + | convention 'attribute.rule' to name the lines. This makes it quick to | specify a specific custom language line for a given attribute rule. | */ - 'custom' => array(), + 'custom' => [], /* |-------------------------------------------------------------------------- @@ -89,10 +89,10 @@ return array( | | The following language lines are used to swap attribute place-holders | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. + | of 'email'. This simply helps us make messages a little cleaner. | */ - 'attributes' => array(), + 'attributes' => [], -); +]; From f335faa572c989f2e0fed48fa79a878e7d1b3c25 Mon Sep 17 00:00:00 2001 From: krisawzm Date: Thu, 26 Mar 2015 01:49:55 +0100 Subject: [PATCH 03/35] Added nb-no --- modules/backend/models/BackendPreferences.php | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/backend/models/BackendPreferences.php b/modules/backend/models/BackendPreferences.php index 84244f6ab..9d712a00d 100644 --- a/modules/backend/models/BackendPreferences.php +++ b/modules/backend/models/BackendPreferences.php @@ -56,6 +56,7 @@ class BackendPreferences extends Model 'tr' => [Lang::get('system::lang.locale.tr'), 'flag-tr'], 'pl' => [Lang::get('system::lang.locale.pl'), 'flag-pl'], 'sk' => [Lang::get('system::lang.locale.sk'), 'flag-sk'], + 'nb-no' => [Lang::get('system::lang.locale.nb-no'), 'flag-no'], ]; // Sort locales alphabetically From 7aaa4d81be08f8b6ccbcb6466f12f70491cde5c4 Mon Sep 17 00:00:00 2001 From: krisawzm Date: Thu, 26 Mar 2015 21:37:22 +0100 Subject: [PATCH 04/35] Fixed typo --- modules/backend/lang/en/lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/backend/lang/en/lang.php b/modules/backend/lang/en/lang.php index 88c01e4bf..f9a5be4c9 100644 --- a/modules/backend/lang/en/lang.php +++ b/modules/backend/lang/en/lang.php @@ -256,7 +256,7 @@ return [ ], 'mysettings' => [ 'menu_label' => 'My Settings', - 'menu_description' => 'Settings relate to your administration account' + 'menu_description' => 'Settings related to your administration account' ], 'myaccount' => [ 'menu_label' => 'My account', From 4c723ac48ffcb35e929c99b146133fc04fb87c3f Mon Sep 17 00:00:00 2001 From: krisawzm Date: Thu, 26 Mar 2015 22:31:21 +0100 Subject: [PATCH 05/35] Another typo --- modules/cms/lang/en/lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/cms/lang/en/lang.php b/modules/cms/lang/en/lang.php index c62ce19dc..fee03c35d 100644 --- a/modules/cms/lang/en/lang.php +++ b/modules/cms/lang/en/lang.php @@ -60,7 +60,7 @@ return [ 'export_button' => 'Export', 'export_title' => 'Export theme', 'export_folders_label' => 'Folders', - 'export_folders_comment' => 'Please select the theme folders you would like to import', + 'export_folders_comment' => 'Please select the theme folders you would like to export', 'delete_button' => 'Delete', 'delete_confirm' => 'Are you sure you want to delete this theme? It cannot be undone!', 'delete_active_theme_failed' => 'Cannot delete the active theme, try making another theme active first.', From 5d79be79eb3f49db20bb75a337d31e3af45aff6e Mon Sep 17 00:00:00 2001 From: krisawzm Date: Thu, 26 Mar 2015 23:16:29 +0100 Subject: [PATCH 06/35] Added Norwegian language support --- modules/backend/lang/nb-no/lang.php | 306 +++++++++++++++++++++++ modules/cms/lang/nb-no/lang.php | 232 +++++++++++++++++ modules/system/lang/de/lang.php | 1 + modules/system/lang/en/lang.php | 3 +- modules/system/lang/es-ar/lang.php | 1 + modules/system/lang/es/lang.php | 1 + modules/system/lang/fa/lang.php | 1 + modules/system/lang/fr/lang.php | 1 + modules/system/lang/hu/lang.php | 3 +- modules/system/lang/id/lang.php | 3 +- modules/system/lang/it/lang.php | 1 + modules/system/lang/ja/lang.php | 3 +- modules/system/lang/nb-no/lang.php | 263 +++++++++++++++++++ modules/system/lang/nb-no/validation.php | 102 ++++++++ modules/system/lang/nl/lang.php | 1 + modules/system/lang/pl/lang.php | 3 +- modules/system/lang/pt-br/lang.php | 1 + modules/system/lang/ro/lang.php | 1 + modules/system/lang/ru/lang.php | 1 + modules/system/lang/sv/lang.php | 1 + modules/system/lang/tr/lang.php | 3 +- modules/system/lang/zh-cn/lang.php | 3 +- 22 files changed, 928 insertions(+), 7 deletions(-) create mode 100644 modules/backend/lang/nb-no/lang.php create mode 100644 modules/cms/lang/nb-no/lang.php create mode 100644 modules/system/lang/nb-no/lang.php create mode 100644 modules/system/lang/nb-no/validation.php diff --git a/modules/backend/lang/nb-no/lang.php b/modules/backend/lang/nb-no/lang.php new file mode 100644 index 000000000..dc73f6a0b --- /dev/null +++ b/modules/backend/lang/nb-no/lang.php @@ -0,0 +1,306 @@ + [ + 'title' => 'Administrasjonsområde' + ], + 'field' => [ + 'invalid_type' => 'Ugyldig felttype brukt :type.', + 'options_method_not_exists' => "Modellklassen :model må definere en metode :method() som returnerer vilkår for formfeltet ':field'." + ], + 'widget' => [ + 'not_registered' => "En widget med klassenavnet ':name' har ikke blitt registrert", + 'not_bound' => "En widget med klassenavnet ':name' er ikke bundet til kontrolleren" + ], + 'page' => [ + 'untitled' => 'Uten navn', + 'access_denied' => [ + 'label' => 'Ingen tilgang', + 'help' => "Du har ikke nødvendig tilgang til å se denne siden.", + 'cms_link' => 'Tilbake til backend' + ] + ], + 'partial' => [ + 'not_found_name' => "En partial ved navn ':name' ble ikke funnet." + ], + 'account' => [ + 'sign_out' => 'Logg ut', + 'login' => 'Logg inn', + 'reset' => 'Nullstill', + 'restore' => 'Gjenopprett', + 'login_placeholder' => 'brukernavn', + 'password_placeholder' => 'passord', + 'forgot_password' => 'Glemt passordet ditt?', + 'enter_email' => 'Din e-postadresse', + 'enter_login' => 'Ditt brukernavn', + 'email_placeholder' => 'e-postadresse', + 'enter_new_password' => 'Skriv inn nytt passord', + 'password_reset' => 'Gjenopprett passord', + 'restore_success' => 'En e-post har blitt sendt til din e-postadresse med informasjon om gjenoppretting av passord.', + 'restore_error' => "Brukernavnet ':login' eksisterer ikke.", + 'reset_success' => 'Ditt passord har blitt gjenopprettet. Du kan nå logge inn.', + 'reset_error' => 'Ugyldig data. Vennligst prøv igjen!', + 'reset_fail' => 'Kunne ikke gjenopprette passord!', + 'apply' => 'Fortsett', + 'cancel' => 'Avbryt', + 'delete' => 'Slett', + 'ok' => 'OK' + ], + 'dashboard' => [ + 'menu_label' => 'Dashboard', + 'widget_label' => 'Widget', + 'widget_width' => 'Bredde', + 'full_width' => 'full bredde', + 'add_widget' => 'Legg til widget', + 'widget_inspector_title' => 'Widget-konfigurasjon', + 'widget_inspector_description' => 'Konfigurer widgeten', + 'widget_columns_label' => 'Bredde :columns', + 'widget_columns_description' => 'Bredden på widgeten. Tall mellom 1 og 10.', + 'widget_columns_error' => 'Vennligst spesifiser bredden på weidgeten som et tall mellom 1 og 10.', + 'columns' => '{1} kolonne|[2,Inf] kolonner', + 'widget_new_row_label' => 'Tving ny rad', + 'widget_new_row_description' => 'Plasserer widgeten i en ny rad.', + 'widget_title_label' => 'Widget-tittel', + 'widget_title_error' => 'Tittel er obligatorisk.', + 'status' => [ + 'widget_title_default' => 'Systemstatus', + 'online' => 'online', + 'maintenance' => 'in maintenance', + 'update_available' => '{0} oppdateringer tilgjengelig!|{1} oppdatering tilgjengelig!|[2,Inf] oppdateringer tilgjengelig!' + ] + ], + 'user' => [ + 'name' => 'Administrator', + 'menu_label' => 'Administratorer', + 'menu_description' => 'Håndter backend-administratorer, grupper og tilganger.', + 'list_title' => 'Håndter administratorer', + 'new' => 'Ny administrator', + 'login' => 'Brukernavn', + 'first_name' => 'Fornavn', + 'last_name' => 'Etternavn', + 'full_name' => 'Fult navn', + 'email' => 'E-postadresse', + 'groups' => 'Grupper', + 'groups_comment' => 'Spesifiser hvilke grupper personen tilhører.', + 'avatar' => 'Avatar', + 'password' => 'Passord', + 'password_confirmation' => 'Bekreft passord', + 'permissions' => 'Tilganger', + 'superuser' => 'Superbruker', + 'superuser_comment' => 'Kryss av denne boksen for å gi personen tilgang til alle områder.', + 'send_invite' => 'Send invitasjon via e-post', + 'send_invite_comment' => 'Kryss av denne boksen for å sende personen en invitasjon via e-post', + 'delete_confirm' => 'Vil du virkelig slette denne administratoren?', + 'return' => 'Tilbake til administratoroversikten', + 'allow' => 'Tillat', + 'inherit' => 'Arv', + 'deny' => 'Nekt', + 'group' => [ + 'name' => 'Gruppe', + 'name_field' => 'Navn', + 'description_field' => 'Beskrivelse', + 'is_new_user_default_field' => 'Legg til nye administratorer til denne gruppen automatisk', + 'code_field' => 'Kode', + 'code_comment' => 'Fyll inn en unik kode for å bruke API-en.', + 'menu_label' => 'Grupper', + 'list_title' => 'Håndter grupper', + 'new' => 'New Administrator Group', + 'delete_confirm' => 'Vil du virkelig slette denne administratorgruppen?', + 'return' => 'Tilbake til gruppeoversikten', + ], + 'preferences' => [ + 'not_authenticated' => 'Det er ingen autentiserte brukere å laste eller lagre innstillinger for.' + ] + ], + 'list' => [ + 'default_title' => 'Liste', + 'search_prompt' => 'Søk...', + 'no_records' => 'Det er ingen treff i denne visningen.', + 'missing_model' => 'List-egenskapen brukt i :class mangler en modelldefinisjon.', + 'missing_column' => 'Det er ingen kolonnedefinisjoner for :columns.', + 'missing_columns' => 'List brukt i :class har ingen definerte kolonner.', + 'missing_definition' => "List-egenskapen inneholder ingen kolonner for ':field'.", + 'behavior_not_ready' => 'List-egenskapen har ikke blir initialisert, sjekk at du har kalt makeList() i kontrolleren.', + 'invalid_column_datetime' => "Kolonneverdien ':column' er ikke et DateTime-objekt, mangler du en \$dates referanse i modellen?", + 'pagination' => 'Viser rader: :from-:to av :total', + 'prev_page' => 'Forrige side', + 'next_page' => 'Neste side', + 'loading' => 'Laster...', + 'setup_title' => 'Listeinnstillinger', + 'setup_help' => 'Kryss av sjekkboksene for å velge hvilke kolonner du vil ha i listen. Du kan sortere kolonnene ved å dra sjekkboksene opp eller ned.', + 'records_per_page' => 'Rader per side', + 'records_per_page_help' => 'Velg antall rader som skal vises på hver side. Vær oppmerksom på at et høyt antall kan redusere ytelsen på siden.', + 'delete_selected' => 'Slett valgte', + 'delete_selected_empty' => 'Det er ingen valgte rader å slette.', + 'delete_selected_confirm' => 'Vil du slette valgte rader?', + 'delete_selected_success' => 'Rader har blitt slettet.', + ], + 'fileupload' => [ + 'attachment' => 'Vedlegg', + 'help' => 'Legg til tittel og beskrivelse for dette vedlegget.', + 'title_label' => 'Tittel', + 'description_label' => 'Beskrivelse' + ], + 'form' => [ + 'create_title' => 'Ny :name', + 'update_title' => 'Endre :name', + 'preview_title' => 'Forhåndsvis :name', + 'create_success' => ':name har blitt opprettet', + 'update_success' => ':name har blitt endret', + 'delete_success' => ':name har blitt slettet', + 'missing_id' => 'Record ID for skjemaet har ikke blitt spesifisert.', + 'missing_model' => 'Skjemaegenskapen brukt i :class mangler en modell.', + 'missing_definition' => "Skjemaegenskapen mangler et felt for ':field'.", + 'not_found' => 'Record ID :id ble ikke funnet.', + 'action_confirm' => 'Er du sikker?', + 'create' => 'Opprett', + 'create_and_close' => 'Opprett og lukk', + 'creating' => 'Oppretter...', + 'creating_name' => 'Oppretter :name...', + 'save' => 'Lagre', + 'save_and_close' => 'Lagre og lukk', + 'saving' => 'Lagrer...', + 'saving_name' => 'Lagrer :name...', + 'delete' => 'Slett', + 'deleting' => 'Sletter...', + 'deleting_name' => 'Sletter :name...', + 'reset_default' => 'Tilbakestill', + 'resetting' => 'Tilbakestiller', + 'resetting_name' => 'Tilbakestiller :name', + 'undefined_tab' => 'Div.', + 'field_off' => 'Av', + 'field_on' => 'På', + 'add' => 'Legg til', + 'apply' => 'Fortsett', + 'cancel' => 'Avbryt', + 'close' => 'Lukk', + 'confirm' => 'Bekreft', + 'reload' => 'Oppdater', + 'ok' => 'OK', + 'or' => 'eller', + 'confirm_tab_close' => 'Vil du virkelig lukke fanen? Endringer som ikke er lagret vil gå tapt.', + 'behavior_not_ready' => 'Skjemaegenskap har ikke blitt initialisert, sjekk at du har kalt initForm() i kontrolleren.', + 'preview_no_files_message' => 'Filer er ikke opplastet', + 'select' => 'Velg', + 'select_all' => 'alle', + 'select_none' => 'ingen', + 'select_placeholder' => 'velg', + 'insert_row' => 'Sett inn rad', + 'delete_row' => 'Slett rad', + 'concurrency_file_changed_title' => 'Fil endret', + 'concurrency_file_changed_description' => "The file you're editing has been changed on disk by another user. You can either reload the file and lose your changes or override the file on the disk.", + 'concurrency_file_changed_description' => "Filen du endrer på har blitt endret på disken av en annen bruker. Du kan enten oppdatere filen og tape endret data eller overskrive filen på disken.", + ], + 'relation' => [ + 'missing_config' => "Relasjonen mangler en konfigurasjon for ':config'.", + 'missing_definition' => "Relasjonen mangler en definisjon for ':field'.", + 'missing_model' => "Relasjonen brukt i :class har ingen definert modell.", + 'invalid_action_single' => "Denne handlingen kan ikke brukes på en enkel relasjon.", + 'invalid_action_multi' => "Denne relasjonen kan ikke brukes på fler-relasjoner.", + 'help' => "Klikk på et element for å legge til", + 'related_data' => "Relatert :name data", + 'add' => "Legg til", + 'add_selected' => "Legg til valgte", + 'add_a_new' => "Legg til ny :name", + 'link_selected' => "Link valgte", + 'link_a_new' => "Link en ny :name", + 'cancel' => "Avbryt", + 'close' => "Lukk", + 'add_name' => "Legg til :name", + 'create' => "Opprett", + 'create_name' => "Opprett :name", + 'update' => "Oppdater", + 'update_name' => "Oppdater :name", + 'preview' => "Forhåndsvis", + 'preview_name' => "Forhåndsvis :name", + 'remove' => "Fjern", + 'remove_name' => "Fjern :name", + 'delete' => "Slett", + 'delete_name' => "Slett :name", + 'delete_confirm' => "Er du sikker?", + 'link' => "Link", + 'link_name' => "Link :name", + 'unlink' => "Fjern link", + 'unlink_name' => "Fjern link :name", + 'unlink_confirm' => "Er du sikker?", + ], + 'model' => [ + 'name' => 'Modell', + 'not_found' => "Modellen ':class' med ID-en :id ble ikke funnet", + 'missing_id' => 'Det er ingen ID spesifisert for å se opp modellen.', + 'missing_relation' => "Modellen ':class' mangler en definisjon for ':relation'.", + 'missing_method' => "Modellen ':class' mangler metoden ':method'.", + 'invalid_class' => "Modellen :model som brukes i :class er ugyldig, den må arve \Model-klassen.", + 'mass_assignment_failed' => "Mass assignment feilet for modell-attributten ':attribute'." + ], + 'warnings' => [ + 'tips' => 'Tips for systemkonfigurasjon', + 'tips_description' => 'Det er problemer du må være oppmerksom på for å konfigurere systemet riktig.', + 'permissions' => 'Mappen :name eller dens undermapper kan ikke skrives på av PHP. Vennligst sjekk skrivetilganger på serveren.', + 'extension' => 'PHP-extensionen :name er ikke installert..' + ], + 'editor' => [ + 'menu_label' => 'Teksteditor-innstillinger', + 'menu_description' => 'Endre teksteditor-innstillingene dine, for eksemplem tekststørrelse og fargevalg.', + 'font_size' => 'Tekststørrelse', + 'tab_size' => 'Tab-størrelse', + 'use_hard_tabs' => 'Inntrykk med tabs', + 'code_folding' => 'Code folding', + 'word_wrap' => 'Word wrap', + 'highlight_active_line' => 'Fremhev aktiv linje', + 'show_invisibles' => 'Vis usynlige tegn', + 'show_gutter' => 'Vis linjenummer', + 'theme' => 'Fargevalg' + ], + 'tooltips' => [ + 'preview_website' => 'Forhåndsvis nettsiden' + ], + 'mysettings' => [ + 'menu_label' => 'Mine innstillinger', + 'menu_description' => 'Innstillinger relatert til din administratorkonto' + ], + 'myaccount' => [ + 'menu_label' => 'Min konto', + 'menu_description' => 'Oppdater dine kontodetaljer, som navn, e-postadresse og passord.', + 'menu_keywords' => 'sikkerhetsinnlogging' + ], + 'branding' => [ + 'menu_label' => 'Tilpass backend', + 'menu_description' => 'Tilpass administratorområdet, for eksempel navn, farger og logo.', + 'brand' => 'Merkevare', + 'logo' => 'Logo', + 'logo_description' => 'Last opp logo for å bruke backend.', + 'app_name' => 'App-navn', + 'app_name_description' => 'Dette navnet vises i tittelområdet backend.', + 'app_tagline' => 'App Tagline', + 'app_tagline_description' => 'Denne teksten vises på innloggingssiden backend.', + 'colors' => 'Farger', + 'primary_light' => 'Primær (Lys)', + 'primary_dark' => 'Primær (Mørk)', + 'secondary_light' => 'Sekundær (Lys)', + 'secondary_dark' => 'Sekundær (Mørk)', + 'styles' => 'Stilsett', + 'custom_stylesheet' => 'Eget stilsett' + ], + 'backend_preferences' => [ + 'menu_label' => 'Backend-innstillinger', + 'menu_description' => 'Håndter kontoinnstillinger som for eksempel språk.', + 'menu_description' => 'Manage your account preferences such as desired language.', + 'locale' => 'Språk', + 'locale_comment' => 'Velg ditt ønsket språk.' + ], + 'access_log' => [ + 'hint' => 'Denne loggen viser en liste over vellykkede administratorinnlogginger. Innloggingene blir lagret i 60 dager.', + 'menu_label' => 'Aksesslogg', + 'menu_description' => 'Se en liste over vellykkede innlogginger på backend.', + 'created_at' => 'Tid', + 'login' => 'Brukernavn', + 'ip_address' => 'IP-adresse', + 'first_name' => 'Fornavn', + 'last_name' => 'Etternavn', + 'email' => 'E-postadresse' + ], + 'filter' => [ + 'all' => 'alle' + ] +]; diff --git a/modules/cms/lang/nb-no/lang.php b/modules/cms/lang/nb-no/lang.php new file mode 100644 index 000000000..567fb94eb --- /dev/null +++ b/modules/cms/lang/nb-no/lang.php @@ -0,0 +1,232 @@ + [ + 'invalid_file' => 'Ugyldig filnavn: :name. Filnavn kan kun inneholde alfanumeriske tegn, understrek, bindestrek og punktum. Eksempel: page.htm, page, subdirectory/page', + 'invalid_property' => "Egenskapen ':name' kan ikke settes", + 'file_already_exists' => "Filen ':name' eksisterer allerede.", + 'error_saving' => "Kunne ikke lagre filen ':name'. Vennligst sjekk skriverettigheter på serveren.", + 'error_creating_directory' => 'Kunne ikke opprette mappen :name. Vennligst sjekk skriverettigheter på serveren.', + 'invalid_file_extension' => 'Ugyldig filtype: :invalid. Tillatte filtyper er: :allowed.', + 'error_deleting' => "Kunne ikke slette filen ':name'. Vennligst sjekk skriverettigheter på serveren.", + 'delete_success' => 'Templates som ble slettet: :count.', + 'file_name_required' => 'Filnavnfeltet er obligatorisk.' + ], + 'theme' => [ + 'not_found_name' => "Tema ':name' ble ikke funnet.", + 'active' => [ + 'not_set' => 'Aktivt tema er ikke valgt.', + 'not_found' => 'Aktivt tema ikke funnet.' + ], + 'edit' => [ + 'not_set' => 'Redigeringstema er ikke valgt.', + 'not_found' => 'Redigeringstema ikke funnet.', + 'not_match' => "Objektet du prøver å åpne tilhører ikke temaet som endres. Vennligst oppdater siden." + ], + 'settings_menu' => 'Frontend tema', + 'settings_menu_description' => 'Forhåndsvis en liste over installerte temaer og velg et aktivt tema.', + 'name_label' => 'Navn', + 'name_create_placeholder' => 'Temanavn', + 'author_label' => 'Forfatter', + 'author_placeholder' => 'Person eller bedrift', + 'description_label' => 'Beskrivelse', + 'description_placeholder' => 'Temabeskrivelse', + 'homepage_label' => 'Hjemmeside', + 'homepage_placeholder' => 'Nettside-URL', + 'code_label' => 'Kode', + 'code_placeholder' => 'En unik kode som brukes for distribusjon', + 'dir_name_label' => 'Mappenavn', + 'dir_name_create_label' => 'Temaets mappenavn', + 'theme_label' => 'Tema', + 'activate_button' => 'Aktivér', + 'active_button' => 'Aktivér', + 'customize_button' => 'Tilpass', + 'duplicate_button' => 'Duplisér', + 'duplicate_title' => 'Duplisér tema', + 'duplicate_theme_success' => 'Temaet har blitt duplisert!', + 'manage_button' => 'Administrer', + 'manage_title' => 'Administrer tema', + 'edit_properties_title' => 'Tema', + 'edit_properties_button' => 'Endre egenskaper', + 'save_properties' => 'Lagre egenskaper', + 'import_button' => 'Importér', + 'import_title' => 'Importér tema', + 'import_theme_success' => 'Temaet har blitt importert!', + 'import_uploaded_file' => 'Temaets arkivfil', + 'import_overwrite_label' => 'Overskriv eksisterende filer', + 'import_overwrite_comment' => 'Fjern kryss for å kun importere nye filer', + 'import_folders_label' => 'Mapper', + 'import_folders_comment' => 'Vennligst velg mappene du vil importere', + 'export_button' => 'Eksportér', + 'export_title' => 'Eksportér tema', + 'export_folders_label' => 'Mapper', + 'export_folders_comment' => 'Vennligst velg mappene du vil eksportere', + 'delete_button' => 'Slett', + 'delete_confirm' => 'Vil du virkelig slette dette temaet? Handlingen kan ikke angres!', + 'delete_active_theme_failed' => 'Kan ikke slette det aktive temaet. Gjør et annet tema aktivt først.', + 'delete_theme_success' => 'Temaet har blitt slettet!', + 'create_title' => 'Opprett tema', + 'create_button' => 'Opprett', + 'create_new_blank_theme' => 'Lag et nytt blankt tema', + 'create_theme_success' => 'Temaet har blitt opprettet!', + 'create_theme_required_name' => 'Vennligst gi temaet et navn.', + 'new_directory_name_label' => 'Temamappe', + 'new_directory_name_comment' => 'Oppgi en ny mappe for det dupliserte temaet.', + 'dir_name_invalid' => 'Navnet kan kun inneholde tall, latinske bokstaver og følgende symbol: _-', + 'dir_name_taken' => 'Temamappen eksiterer allerede.', + 'find_more_themes' => 'Finn flere temaer på OctoberCMS Theme Marketplace', + 'return' => 'Tilbake til temaliste', + ], + 'maintenance' => [ + 'settings_menu' => 'Vedlikeholdsmodus', + 'settings_menu_description' => 'Konfigurer vedlikeholdsmodussiden og endre innstillinger.', + 'is_enabled' => 'Aktivér vedlikeholdsmodus', + 'is_enabled_comment' => 'Når aktivert, vil besøkende se følgende side:' + ], + 'page' => [ + 'not_found_name' => "Siden ':name' ble ikke funnet", + 'not_found' => [ + 'label' => 'Side ikke funnet', + 'help' => 'Den forespurte siden ble ikke funnet.' + ], + 'custom_error' => [ + 'label' => 'Side-feil', + 'help' => "Noe gikk galt. Siden kan ikke vises." + ], + 'menu_label' => 'Sider', + 'unsaved_label' => 'Ulagrede sider', + 'no_list_records' => 'Ingen sider funnet', + 'new' => 'Ny side', + 'invalid_url' => 'Ugyldig URL-format. URL-en skal starte med skråstrek og kan inneholde tall, latinske bokstaver og følgende symbol: ._-[]:?|/+*^$', + 'delete_confirm_multiple' => 'Vil du virkelig slette valgte sider?', + 'delete_confirm_single' => 'Vil du virkelig slette denne siden?', + 'no_layout' => '-- ingen layout --' + ], + 'layout' => [ + 'not_found_name' => "Layouten ':name' ble ikke funnet", + 'menu_label' => 'Layouts', + 'unsaved_label' => 'Ulagrede layouts', + 'no_list_records' => 'Ingen layouts funnet', + 'new' => 'Ny layout', + 'delete_confirm_multiple' => 'Vil du virkelig slette valgte layouts?', + 'delete_confirm_single' => 'Vil du virkelig slette denne layout?' + ], + 'partial' => [ + 'not_found_name' => "Partial ':name' ble ikke funnet.", + 'invalid_name' => 'Ugyldig partial navn: :name.', + 'menu_label' => 'Partials', + 'unsaved_label' => 'Ulagrede partials', + 'no_list_records' => 'Ingen partials funnet', + 'delete_confirm_multiple' => 'Vil du virkelig slette valgte partials?', + 'delete_confirm_single' => 'Vil du virkelig slette denne partialen?', + 'new' => 'Ny partial' + ], + 'content' => [ + 'not_found_name' => "Innholdsfilen ':name' ble ikke funnet.", + 'menu_label' => 'Innhold', + 'unsaved_label' => 'Ulagret innhold', + 'no_list_records' => 'No content files found', + 'delete_confirm_multiple' => 'Vil du virkelig slette valgte innholdsfiler eller -mapper?', + 'delete_confirm_single' => 'Vil du virkelig slette denne innholdsfilen eller -mappen?', + 'new' => 'Ny innholdsfil' + ], + 'ajax_handler' => [ + 'invalid_name' => 'Ugyldig AJAX handler navn: :name.', + 'not_found' => "AJAX handler ':name' ble ikke funnet." + ], + 'cms' => [ + 'menu_label' => 'CMS' + ], + 'sidebar' => [ + 'add' => 'Legg til', + 'search' => 'Søk...' + ], + 'editor' => [ + 'settings' => 'Innstillinger', + 'title' => 'Tittel', + 'new_title' => 'Ny side tittel', + 'url' => 'URL', + 'filename' => 'Filnavn', + 'layout' => 'Layout', + 'description' => 'Beskrivelse', + 'preview' => 'Forhåndsvis', + 'meta' => 'Meta', + 'meta_title' => 'Meta-tittel', + 'meta_description' => 'Meta-beskrivelse', + 'markup' => 'Markup', + 'code' => 'Kode', + 'content' => 'Innhold', + 'hidden' => 'Skjult', + 'hidden_comment' => 'Kun backend-brukere har tilgang til skjulte sider.', + 'enter_fullscreen' => 'Fullskjermmodus', + 'exit_fullscreen' => 'Avslutt fullskjermmodus' + ], + 'asset' => [ + 'menu_label' => 'Ressurser', + 'unsaved_label' => 'Ulagrede ressurser', + 'drop_down_add_title' => 'Legg til...', + 'drop_down_operation_title' => 'Handling...', + 'upload_files' => 'Last opp fil(er)', + 'create_file' => 'Opprett fil', + 'create_directory' => 'Opprett mappe', + 'directory_popup_title' => 'Ny mappe', + 'directory_name' => 'Mappenavn', + 'rename' => 'Nytt navn', + 'delete' => 'Slett', + 'move' => 'Flytt', + 'select' => 'Velg', + 'new' => 'Ny fil', + 'rename_popup_title' => 'Nytt navn', + 'rename_new_name' => 'Nytt navn', + 'invalid_path' => 'Mappestien kan kun inneholde tall, latinske bokstaver, mellomrom og følgende symbol: ._-/', + 'error_deleting_file' => 'Kunne ikke slette :name.', + 'error_deleting_dir_not_empty' => 'Kunne ikke slette :name. Mappen er ikke tom.', + 'error_deleting_dir' => 'Kunne ikke slette :name.', + 'invalid_name' => 'Navnet kan kun inneholde tall, latinske bokstaver, mellomrom og følgende symbol: ._-', + 'original_not_found' => 'Original fil eller mappe ikke funnet', + 'already_exists' => 'Fil eller mappe med samme navn eksiterer allerede', + 'error_renaming' => 'Kunne ikke gi filen eller mappen nytt navn', + 'name_cant_be_empty' => 'Navnet kan ikke være tomt', + 'too_large' => 'Opplastet fil er for stor. Maksimum filstørrelse er :max_size', + 'type_not_allowed' => 'Kun følgende filtyper er tillat: :allowed_types', + 'file_not_valid' => 'Filen er ugyldig', + 'error_uploading_file' => "Kunne ikke laste opp filen ':name': :error", + 'move_please_select' => 'velg', + 'move_destination' => 'Målmappe', + 'move_popup_title' => 'Flytt ressurser', + 'move_button' => 'Flytt', + 'selected_files_not_found' => 'Valgte filer ikke funnet', + 'select_destination_dir' => 'Vennligst velg en målmappe', + 'destination_not_found' => 'Målmappe ikke funnet', + 'error_moving_file' => 'Kunne ikke flytte filen :file', + 'error_moving_directory' => 'Kunne ikke flytte mappen :dir', + 'error_deleting_directory' => 'Kunne ikke slette original mappe :dir', + 'path' => 'Mål' + ], + 'component' => [ + 'menu_label' => 'Komponenter', + 'unnamed' => 'Navnløs', + 'no_description' => 'Ingen beskrivelse spesifisert', + 'alias' => 'Alias', + 'alias_description' => 'Et unikt navn gitt til komponenten for å benytte den i sider og layouts.', + 'validation_message' => 'Komponentaliaser kan kun inneholde latinske symboler, tall og understreker. Aliaser skal starte med et latinsk symbol.', + 'invalid_request' => 'Templaten kan ikke lagres på grunn av ugyldig komponentdata.', + 'no_records' => 'Ingen komponenter funnet', + 'not_found' => "Komponenten ':name' ble ikke funnet.", + 'method_not_found' => "Komponenten ':name' inneholder ikke en metode ':method'." + ], + 'template' => [ + 'invalid_type' => 'Ukjent template-type.', + 'not_found' => 'Forespurt template ikke funnet.', + 'saved' => 'Templaten har blitt lagret.' + ], + 'permissions' => [ + 'name' => 'Cms', + 'manage_content' => 'Håndter innholdsfiler', + 'manage_assets' => 'Håndter ressurser', + 'manage_pages' => 'Håndter sider', + 'manage_layouts' => 'Håndter layouts', + 'manage_partials' => 'Håndter partials', + 'manage_themes' => 'Håndter maler' + ] +]; diff --git a/modules/system/lang/de/lang.php b/modules/system/lang/de/lang.php index 31a6446d5..2d76a4aed 100644 --- a/modules/system/lang/de/lang.php +++ b/modules/system/lang/de/lang.php @@ -18,6 +18,7 @@ return [ 'ro' => 'Romana', 'pt-br' => 'Brazilian Portuguese', 'fa' => 'Persian', + 'nb-no' => 'Norwegisch (Bokmål)' ], 'directory' => [ 'create_fail' => "Konnte Verzeichnis: :name nicht erstellen", diff --git a/modules/system/lang/en/lang.php b/modules/system/lang/en/lang.php index 82cf5aec1..2acccaaff 100644 --- a/modules/system/lang/en/lang.php +++ b/modules/system/lang/en/lang.php @@ -23,7 +23,8 @@ return [ 'ru' => 'Russian', 'se' => 'Swedish', 'sk' => 'Slovak (Slovakia)', - 'tr' => 'Turkish' + 'tr' => 'Turkish', + 'nb-no' => 'Norwegian (Bokmål)' ], 'directory' => [ 'create_fail' => 'Cannot create directory: :name' diff --git a/modules/system/lang/es-ar/lang.php b/modules/system/lang/es-ar/lang.php index 75396e9aa..fd7499ba4 100644 --- a/modules/system/lang/es-ar/lang.php +++ b/modules/system/lang/es-ar/lang.php @@ -18,6 +18,7 @@ return [ 'ro' => 'Romana', 'pt-br' => 'Portugués Brasilero', 'es-Ar' => 'Español Argentino', + 'nb-no' => 'Noruego (Bokmål)' ], 'directory' => [ 'create_fail' => "No se puede crear el directorio: :name", diff --git a/modules/system/lang/es/lang.php b/modules/system/lang/es/lang.php index 3ff80e4aa..83ba87f83 100644 --- a/modules/system/lang/es/lang.php +++ b/modules/system/lang/es/lang.php @@ -20,6 +20,7 @@ 'pt-br' => 'Portugués Brasilero', 'es-ar' => 'Español Argentino', 'es' => 'Español', + 'nb-no' => 'Noruego (Bokmål)' ], 'directory' => [ 'create_fail' => "No es posible crear el directorio: :name", diff --git a/modules/system/lang/fa/lang.php b/modules/system/lang/fa/lang.php index 33ecebdf3..a2445a242 100644 --- a/modules/system/lang/fa/lang.php +++ b/modules/system/lang/fa/lang.php @@ -18,6 +18,7 @@ return [ 'ro' => 'رومانیایی', 'pt-br' => 'پرتغالی برزیل', 'fa' => 'فارسی', + 'nb-no' => 'نروژی (Bokmål)' ], 'directory' => [ 'create_fail' => "مشکلی در ایجاد پوشه ی :name به وجود آمده است", diff --git a/modules/system/lang/fr/lang.php b/modules/system/lang/fr/lang.php index e5a541dce..0d41b3ecf 100644 --- a/modules/system/lang/fr/lang.php +++ b/modules/system/lang/fr/lang.php @@ -16,6 +16,7 @@ return [ 'fr' => 'Français', 'pt-br' => 'Portugais-Brésilien', 'fa' => 'Persian', + 'nb-no' => 'Norvégien (Bokmål)' ], 'directory' => [ 'create_fail' => "Impossible de créer le répertoire : :name", diff --git a/modules/system/lang/hu/lang.php b/modules/system/lang/hu/lang.php index 4d016d31b..ef8a99860 100644 --- a/modules/system/lang/hu/lang.php +++ b/modules/system/lang/hu/lang.php @@ -22,7 +22,8 @@ return [ 'ro' => 'Román', 'ru' => 'Orosz', 'se' => 'Svéd', - 'tr' => 'Török' + 'tr' => 'Török', + 'nb-no' => 'Norvég (Bokmål)' ], 'directory' => [ 'create_fail' => 'Nem hozható létre a könyvtár: :name' diff --git a/modules/system/lang/id/lang.php b/modules/system/lang/id/lang.php index 8f2240f1a..8995e6e6b 100644 --- a/modules/system/lang/id/lang.php +++ b/modules/system/lang/id/lang.php @@ -23,7 +23,8 @@ return [ 'ru' => 'Rusia', 'se' => 'Swedia', 'sk' => 'Slowakia (Slovakia)', - 'tr' => 'Turki' + 'tr' => 'Turki', + 'nb-no' => 'Norwegian (Bokmål)' ], 'directory' => [ 'create_fail' => 'Tidak dapat membuat direktori: :name' diff --git a/modules/system/lang/it/lang.php b/modules/system/lang/it/lang.php index 60d05a116..7ab0ee6bf 100644 --- a/modules/system/lang/it/lang.php +++ b/modules/system/lang/it/lang.php @@ -17,6 +17,7 @@ return [ 'it' => 'Italiano', 'pt-br' => 'Portoghese (Brasile)', 'fa' => 'Persian', + 'nb-no' => 'Norvegese (Bokmål)' ], 'directory' => [ 'create_fail' => "Impossibile creare la cartella: :name", diff --git a/modules/system/lang/ja/lang.php b/modules/system/lang/ja/lang.php index 05e50be63..32af98e50 100644 --- a/modules/system/lang/ja/lang.php +++ b/modules/system/lang/ja/lang.php @@ -20,7 +20,8 @@ return [ 'ro' => 'Romanian', 'ru' => 'Russian', 'se' => 'Swedish', - 'tr' => 'Turkish' + 'tr' => 'Turkish', + 'nb-no' => 'Norwegian (Bokmål)' ], 'directory' => [ 'create_fail' => "ディレクトリ':name'を作成できません。", diff --git a/modules/system/lang/nb-no/lang.php b/modules/system/lang/nb-no/lang.php new file mode 100644 index 000000000..2d81f624d --- /dev/null +++ b/modules/system/lang/nb-no/lang.php @@ -0,0 +1,263 @@ + [ + 'name' => 'October CMS', + 'tagline' => 'Getting back to basics' + ], + 'locale' => [ + 'en' => 'Engelsk', + 'de' => 'Tysk', + 'es' => 'Spansk', + 'es-ar' => 'Spansk (Argentina)', + 'fa' => 'Persisk', + 'fr' => 'Fransk', + 'hu' => 'Ungarsk', + 'id' => 'Indonesisk', + 'it' => 'Italiensk', + 'ja' => 'Japansk', + 'nl' => 'Nederlandsk', + 'pl' => 'Polsk', + 'pt-br' => 'Brasiliansk Portugisk', + 'ro' => 'Rumensk', + 'ru' => 'Russisk', + 'se' => 'Svensk', + 'sk' => 'Slovak (Slovakia)', + 'tr' => 'Tyrkisk', + 'nb-no' => 'Norwegian (Bokmål)' + ], + 'directory' => [ + 'create_fail' => 'Kan ikke opprette mappen: :name' + ], + 'file' => [ + 'create_fail' => 'Kan ikke opprette filen: :name' + ], + 'combiner' => [ + 'not_found' => "Kombinasjonsfilen ':name' ble ikke funnet." + ], + 'system' => [ + 'name' => 'System', + 'menu_label' => 'System', + 'categories' => [ + 'cms' => 'CMS', + 'misc' => 'Div.', + 'logs' => 'Logger', + 'mail' => 'E-post', + 'shop' => 'Shop', + 'team' => 'Team', + 'users' => 'Brukere', + 'system' => 'System', + 'social' => 'Sosialt', + 'events' => 'Hendelser', + 'customers' => 'Kunder', + 'my_settings' => 'Mine innstillinger' + ] + ], + 'plugin' => [ + 'unnamed' => 'Navnløs plugin', + 'name' => [ + 'label' => 'Plugin-navn', + 'help' => 'Navngi pluginen ved et unikt navn. For eksempel, RainLab.Blog' + ] + ], + 'plugins' => [ + 'manage' => 'Håndtere plugins', + 'enable_or_disable' => 'Aktivere eller deaktivere', + 'enable_or_disable_title' => 'Aktivere eller deaktivere plugins', + 'remove' => 'Fjern', + 'refresh' => 'Oppdater', + 'disabled_label' => 'Deaktivert', + 'disabled_help' => 'Deaktiverte plugins blir ignorert av applikasjonen.', + 'selected_amount' => 'Valgte plugins: :amount', + 'remove_confirm' => 'Er du sikker?', + 'remove_success' => 'Plugins har blitt fjernet fra systemet.', + 'refresh_confirm' => 'Er du sikker?', + 'refresh_success' => 'Plugins har blitt oppdatert i systemet.', + 'disable_confirm' => 'Er du sikker?', + 'disable_success' => 'Plugins har blitt deaktivert.', + 'enable_success' => 'Plugins har blitt aktivert.', + 'unknown_plugin' => 'Plugins har blitt fjernet fra systemet.' + ], + 'project' => [ + 'name' => 'Prosjekt', + 'owner_label' => 'Eier', + 'attach' => 'Tilkoble prosjekt', + 'detach' => 'Avkoble prosjekt', + 'none' => 'Ingen', + 'id' => [ + 'label' => 'Prosjekt-ID', + 'help' => 'Hvordan finne din prosjekt-ID', + 'missing' => 'Vennligst spesifiser en prosjekt-ID.' + ], + 'detach_confirm' => 'Vil du virkelig avkoble dette prosjektet?', + 'unbind_success' => 'Prosjektet har blitt avkoblet.' + ], + 'settings' => [ + 'menu_label' => 'Innstillinger', + 'not_found' => 'Fant ikke spesifiserte innstilling.', + 'missing_model' => 'Innstillingssiden mangler en modell-definisjon.', + 'update_success' => 'Innstillingene for :name har blitt lagret.', + 'return' => 'Tilbake til systeminnstillinger', + 'search' => 'Søk' + ], + 'mail' => [ + 'log_file' => 'Loggfil', + 'menu_label' => 'E-postinnstillinger', + 'menu_description' => 'Administrere e-postinnstillinger.', + 'general' => 'Generelt', + 'method' => 'E-postmetode', + 'sender_name' => 'Avsendernavn', + 'sender_email' => 'Avsenderens e-postadresse', + 'php_mail' => 'PHP mail', + 'sendmail' => 'Sendmail', + 'smtp' => 'SMTP', + 'smtp_address' => 'SMTP-adresse', + 'smtp_authorization' => 'SMTP-autentisering kreves', + 'smtp_authorization_comment' => 'Kryss av dersom SMTP-tjeneren krever autentisering.', + 'smtp_username' => 'Brukernavn', + 'smtp_password' => 'Passord', + 'smtp_port' => 'SMTP-port', + 'smtp_ssl' => 'SSL-tilkobling påkrevd', + 'sendmail' => 'Sendmail', + 'sendmail_path' => 'Sendmail-sti', + 'sendmail_path_comment' => 'Vennligst oppgi stien til sendmail-programmet.', + 'mailgun' => 'Mailgun', + 'mailgun_domain' => 'Mailgun-domene', + 'mailgun_domain_comment' => 'Vennligst oppgi Mailgun-domenenavnet.', + 'mailgun_secret' => 'Mailgun Secret', + 'mailgun_secret_comment' => 'Oppgi din Mailgun-API-nøkkel.', + 'mandrill' => 'Mandrill', + 'mandrill_secret' => 'Mandrill Secret', + 'mandrill_secret_comment' => 'Enter your Mandrill API key.' + ], + 'mail_templates' => [ + 'menu_label' => 'E-postmaler', + 'menu_description' => 'Modifisere e-postmalene som blir sendt til brukere og administratorer, håndtere e-postlayouts.', + 'new_template' => 'Ny mal', + 'new_layout' => 'Ny layout', + 'template' => 'Mal', + 'templates' => 'Maler', + 'menu_layouts_label' => 'E-postlayouts', + 'layout' => 'Layout', + 'layouts' => 'Layouts', + 'name' => 'Navn', + 'name_comment' => 'Unikt navn som tilknyttes denne layouten', + 'code' => 'Code', + 'code_comment' => 'Unik kode som tilknyttes denne malen', + 'subject' => 'Emne', + 'subject_comment' => 'Emnet til e-posten', + 'description' => 'Beskrivelse', + 'content_html' => 'HTML', + 'content_css' => 'CSS', + 'content_text' => 'Klartekst', + 'test_send' => 'Send testmelding', + 'test_success' => 'Testmeldingen har blitt sendt.', + 'return' => 'Tilbake til malliste' + ], + 'install' => [ + 'project_label' => 'Tilkoble prosjekt', + 'plugin_label' => 'Installér', + 'missing_plugin_name' => 'Vennligst oppgi pluginens navn.', + 'install_completing' => 'Fullfører installasjonen', + 'install_success' => 'Plugin har blitt installert.' + ], + 'updates' => [ + 'title' => 'Håndtere oppdateringer', + 'name' => 'Programvareoppdateringer', + 'menu_label' => 'Oppdateringer', + 'menu_description' => 'Oppdatere systemet, håndtere og installere plugins og themes.', + 'check_label' => 'Se etter oppdateringer', + 'retry_label' => 'Prøv igjen', + 'plugin_name' => 'Navn', + 'plugin_description' => 'Beskrivelse', + 'plugin_version' => 'Versjon', + 'plugin_author' => 'Utgiver', + 'core_build' => 'Nåværende build', + 'core_build_old' => 'Nåværende build :build', + 'core_build_new' => 'Build :build', + 'core_build_new_help' => 'Siste build er tilgjengelig.', + 'core_downloading' => 'Laster ned applikasjonsfiler', + 'core_extracting' => 'Pakker opp applikasjonsfiler', + 'plugins' => 'Plugins', + 'disabled' => 'Deaktivert', + 'plugin_downloading' => 'Laster ned plugin: :name', + 'plugin_extracting' => 'Pakker opp plugin: :name', + 'plugin_version_none' => 'Ny plugin', + 'plugin_version_old' => 'Nåværende v:version', + 'plugin_version_new' => 'v:version', + 'theme_label' => 'Theme', + 'theme_new_install' => 'New theme installation.', # --- + 'theme_downloading' => 'Laster ned theme: :name', + 'theme_extracting' => 'Pakker opp theme: :name', + 'update_label' => 'Oppdatér programvare', + 'update_completing' => 'Ferdiggjør oppdatering', + 'update_loading' => 'Henter tilgjengelige oppdateringer...', + 'update_success' => 'Oppdatering har fullført.', + 'update_failed_label' => 'Oppdateringen mislyktes', + 'force_label' => 'Tving update', + 'found' => [ + 'label' => 'Fant nye oppdateringer!', + 'help' => 'Klikk på Oppdatér programvare for å oppdatere.' + ], + 'none' => [ + 'label' => 'Ingen oppdateringer', + 'help' => 'Ingen nye oppdateringer ble funnet.' + ] + ], + 'server' => [ + 'connect_error' => 'Kunne ikke koble til serveren.', + 'response_not_found' => 'Oppdateringsserveren ble ikke funnet.', + 'response_invalid' => 'Feilaktig respons fra serveren.', + 'response_empty' => 'Tom respons fra serveren.', + 'file_error' => 'Serveren kunne ikke levere pakken.', + 'file_corrupt' => 'Pakken fra serveren er korrupt.' + ], + 'behavior' => [ + 'missing_property' => 'Klassen :class må definere egenskapen $:property som brukes av :behavior -egenskapen.' + ], + 'config' => [ + 'not_found' => 'Fant ikke konfigurasjonsfilen :file definert for for :location.', + 'required' => "Konfigurasjon brukt i :location må angi verdien ':property'." + ], + 'zip' => [ + 'extract_failed' => "Kunne ikke pakke opp core-fil ':file'." + ], + 'event_log' => [ + 'hint' => 'Denne loggen viser en liste over potensielle feilmeldinger som oppstår i applikasjonen, for eksempel unntak og debugginginformasjon.', + 'menu_label' => 'Hendelseslogg', + 'menu_description' => 'Se systemloggmeldinger med registrert tid og detaljer.', + 'empty_link' => 'Tøm hendelseslogg', + 'empty_loading' => 'Tømmer hendelseslogg...', + 'empty_success' => 'Hendelsesloggen er tømt.', + 'return_link' => 'Tilbake til hendelseslogg', + 'id' => 'ID', + 'id_label' => 'Hendelses-ID', + 'created_at' => 'Tid', + 'message' => 'Melding', + 'level' => 'Nivå' + ], + 'request_log' => [ + 'hint' => 'Denne loggen viser en liste over nettleserforespørsler som kan kreve oppmerksomhet. For eksempel, hvis en bruker besøker en side som ikke eksisterer, vil det bli oppført her med statuskode 404.', + 'menu_label' => 'Forespørselslogg', + 'menu_description' => 'Se feilaktige forespørsler, for eksempel Ikke funnet (404).', + 'empty_link' => 'Tøm forespørselslogg', + 'empty_loading' => 'Tømmer forespørselslogg...', + 'empty_success' => 'Forespørselsloggen er tømt.', + 'return_link' => 'Tilbake til forespørselslogg', + 'id' => 'ID', + 'id_label' => 'Logg-ID', + 'count' => 'Antall', + 'referer' => 'Referers', + 'url' => 'URL', + 'status_code' => 'Status' + ], + 'permissions' => [ + 'name' => 'System', + 'manage_system_settings' => 'Håndtere systeminnstillinger', + 'manage_software_updates' => 'Håndtere programvareoppdateringer', + 'manage_mail_templates' => 'Håndtere e-postmaler', + 'manage_mail_settings' => 'Håndtere e-postinnstillinger', + 'manage_other_administrators' => 'Håndtere andre administratorer', + 'view_the_dashboard' => 'Se dashboard' + ] +]; diff --git a/modules/system/lang/nb-no/validation.php b/modules/system/lang/nb-no/validation.php new file mode 100644 index 000000000..1957f72e7 --- /dev/null +++ b/modules/system/lang/nb-no/validation.php @@ -0,0 +1,102 @@ + ":attribute må aksepteres.", + "active_url" => ":attribute er ikke en gyldig URL.", + "after" => ":attribute må være en dato etter :date.", + "alpha" => ":attribute kan kun inneholde bokstaver.", + "alpha_dash" => ":attribute kan kun inneholde bokstaver, tall og bindestreker.", + "alpha_num" => ":attribute kan kun inneholde bokstaver og tall.", + "array" => ":attribute må være et array.", + "before" => ":attribute må være en dato før :date.", + "between" => [ + "numeric" => ":attribute må være mellom :min - :max.", + "file" => ":attribute må være mellom :min - :max kilobytes.", + "string" => ":attribute må være mellom :min - :max tegn.", + "array" => ":attribute må ha mellom :min - :max elementer.", + ], + "confirmed" => ":attribute bekreftelse samsvarer ikke.", + "date" => ":attribute er ikke en gyldig dato.", + "date_format" => ":attribute samsvarer ikke med formatet :format.", + "different" => ":attribute og :other må være forskjellig.", + "digits" => ":attribute må være :digits tall.", + "digits_between" => ":attribute må være mellom :min og :max tall.", + "email" => ":attribute format ugyldig.", + "exists" => "Valgt :attribute er ugyldig.", + "image" => ":attribute må være et bilde.", + "in" => "Valgt :attribute er ugyldig.", + "integer" => ":attribute må være et heltall.", + "ip" => ":attribute må være en gyldig IP-adresse.", + "max" => [ + "numeric" => ":attribute kan ikke være større enn :max.", + "file" => ":attribute kan ikke være større enn :max kilobytes.", + "string" => ":attribute kan ikke inneholde mer enn :max tegn.", + "array" => ":attribute kan ikke ha mer enn :max elementer.", + ], + "mimes" => ":attribute må være av filtype: :values.", + "min" => [ + "numeric" => ":attribute må være minst :min.", + "file" => ":attribute må være minst :min kilobytes.", + "string" => ":attribute må være minst :min tegn.", + "array" => ":attribute må ha minst :min elementer.", + ], + "not_in" => "Valgt :attribute er ugyldig.", + "numeric" => ":attribute må være et tall.", + "regex" => ":attribute format er ugyldig.", + "required" => ":attribute felt kreves.", + "required_if" => ":attribute felt kreves når :other er :value.", + "required_with" => ":attribute felt kreves når :values er til stede.", + "required_without" => ":attribute felt kreves når :values ikke er til stede.", + "same" => ":attribute og :other må samsvare.", + "size" => [ + "numeric" => ":attribute må være :size.", + "file" => ":attribute må være :size kilobytes.", + "string" => ":attribute må være :size tegn.", + "array" => " :attribute må inneholde :size elementer.", + ], + "unique" => ":attribute er allerede i bruk.", + "url" => ":attribute format er ugyldig.", + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +); diff --git a/modules/system/lang/nl/lang.php b/modules/system/lang/nl/lang.php index 1584b2bb8..5f25830be 100644 --- a/modules/system/lang/nl/lang.php +++ b/modules/system/lang/nl/lang.php @@ -18,6 +18,7 @@ return [ 'ro' => 'Roemeens', 'pt-br' => 'Braziliaans Portugees', 'fa' => 'Persian', + 'nb-no' => 'Noors (Bokmål)' ], 'directory' => [ 'create_fail' => "Map aanmaken mislukt: :name", diff --git a/modules/system/lang/pl/lang.php b/modules/system/lang/pl/lang.php index a976af068..dcb74fa9f 100644 --- a/modules/system/lang/pl/lang.php +++ b/modules/system/lang/pl/lang.php @@ -21,7 +21,8 @@ return [ 'ru' => 'Rosyjski', 'se' => 'Szwedzki', 'tr' => 'Turecki', - 'pl' => 'Polski' + 'pl' => 'Polski', + 'nb-no' => 'Norweski (Bokmål)' ], 'directory' => [ 'create_fail' => 'Nie można stworzyć katalogu: :name' diff --git a/modules/system/lang/pt-br/lang.php b/modules/system/lang/pt-br/lang.php index 8b81d1c05..49d70d798 100644 --- a/modules/system/lang/pt-br/lang.php +++ b/modules/system/lang/pt-br/lang.php @@ -18,6 +18,7 @@ return [ 'ro' => 'Romano', 'pt-br' => 'Português do Brasil', 'fa' => 'Persian', + 'nb-no' => 'Norueguês (Bokmål)' ], 'directory' => [ 'create_fail' => "Não é possível criar o diretório: :name", diff --git a/modules/system/lang/ro/lang.php b/modules/system/lang/ro/lang.php index b9ee347a4..a1e569037 100644 --- a/modules/system/lang/ro/lang.php +++ b/modules/system/lang/ro/lang.php @@ -17,6 +17,7 @@ return [ 'ro' => 'Romana', 'pt-br' => 'Portugheza (Brazilia)', 'fa' => 'Persian', + 'nb-no' => 'Norvegiană (Bokmål)' ], 'directory' => [ 'create_fail' => "Nu se poate crea directorul: :name", diff --git a/modules/system/lang/ru/lang.php b/modules/system/lang/ru/lang.php index bee58c3f8..5ccceb3cb 100644 --- a/modules/system/lang/ru/lang.php +++ b/modules/system/lang/ru/lang.php @@ -21,6 +21,7 @@ return [ 'ru' => 'Russian', 'se' => 'Swedish', 'tr' => 'Turkish', + 'nb-no' => 'Norwegian (Bokmål)' ], 'directory' => [ 'create_fail' => "Невозможно создать директорию: :name", diff --git a/modules/system/lang/sv/lang.php b/modules/system/lang/sv/lang.php index 8f79658ec..c1624efe1 100644 --- a/modules/system/lang/sv/lang.php +++ b/modules/system/lang/sv/lang.php @@ -18,6 +18,7 @@ return [ 'ro' => 'Romana', 'pt-br' => 'Brazilian Portuguese', 'fa' => 'Persian', + 'nb-no' => 'Norska (Bokmål)' ], 'directory' => [ 'create_fail' => "Kunde inte skapa mapp: :name", diff --git a/modules/system/lang/tr/lang.php b/modules/system/lang/tr/lang.php index 695176455..d6cf51c8c 100644 --- a/modules/system/lang/tr/lang.php +++ b/modules/system/lang/tr/lang.php @@ -20,7 +20,8 @@ return [ 'ro' => 'Română (România)', 'ru' => 'Русский (Россия - Russia)', 'se' => 'Svenska (Sverige)', - 'tr' => 'Türkçe (Türkiye)' + 'tr' => 'Türkçe (Türkiye)', + 'nb-no' => 'Norwegian (Bokmål)' ], 'directory' => [ 'create_fail' => "Klasör oluşturulamıyor: :name" diff --git a/modules/system/lang/zh-cn/lang.php b/modules/system/lang/zh-cn/lang.php index 634b68a9e..bc6023ad1 100644 --- a/modules/system/lang/zh-cn/lang.php +++ b/modules/system/lang/zh-cn/lang.php @@ -24,7 +24,8 @@ return [ 'se' => 'Swedish', 'sk' => 'Slovak (Slovakia)', 'tr' => 'Turkish', - 'zh-cn' => 'Chinese (China)' + 'zh-cn' => 'Chinese (China)', + 'nb-no' => 'Norwegian (Bokmål)' ], 'directory' => [ 'create_fail' => '不能创建目录: :name' From 035ebbbb68c578b5b78187625720dbcdb7130a6c Mon Sep 17 00:00:00 2001 From: Scott Bedard Date: Sun, 29 Mar 2015 00:20:48 -0400 Subject: [PATCH 07/35] Fixes issue #1035 Triggers a change event when the "all" or "none" checkboxlist helpers is clicked, enabling dependent fields be adjusted accordingly. https://github.com/octobercms/october/issues/1035 --- .../backend/widgets/form/partials/_field_checkboxlist.htm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/backend/widgets/form/partials/_field_checkboxlist.htm b/modules/backend/widgets/form/partials/_field_checkboxlist.htm index 52e0af915..fcfc479a1 100644 --- a/modules/backend/widgets/form/partials/_field_checkboxlist.htm +++ b/modules/backend/widgets/form/partials/_field_checkboxlist.htm @@ -40,8 +40,8 @@ : - , - + , + @@ -93,4 +93,4 @@

placeholder)) ?>

- \ No newline at end of file + From 26d92d282f9f227ce62a60d419c83dd1c4b4bbcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C4=ABss=20J=C4=81nis=20=C4=80bolti=C5=86=C5=A1?= Date: Thu, 2 Apr 2015 09:59:07 +0300 Subject: [PATCH 08/35] Fixed custom error pages outputting headers If we don't have this method called, then the controller returns an object. From then on, [Symfony converts this object in to a string](https://github.com/symfony/HttpFoundation/blob/master/Response.php#L406). This string is **not just the content of the view**, but the headers as well. After attaching this method, `handleCustomError()` returns a string and everything works as expected. --- modules/system/classes/ErrorHandler.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/system/classes/ErrorHandler.php b/modules/system/classes/ErrorHandler.php index 4de649faf..43af29373 100644 --- a/modules/system/classes/ErrorHandler.php +++ b/modules/system/classes/ErrorHandler.php @@ -49,7 +49,7 @@ class ErrorHandler extends ErrorHandlerBase // Route to the CMS error page. $controller = new Controller($theme); - return $controller->run('/error'); + return $controller->run('/error')->getContent(); } /** From 4b1f1b767bb950a83fc89f3837f1f36a06b33060 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Mon, 6 Apr 2015 15:03:51 +1000 Subject: [PATCH 09/35] Update CHANGELOG --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 35981416b..30e04e06e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +* **Build 23x** (2015-03-xx) + - Installing plugins in the back-end has a new interface. + - Marketplace themes can now be installed using the back-end. + * **Build 236** (2015-03-28) - Default context of `manage` and `pivot` forms is now *create* and *update* respectively, instead of the old value *relation*. Use the `context` option to set it back to the old value (see Backend > Relations docs). From 885dd70060a1cb98fa54fd97e00f46863839e3db Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Mon, 6 Apr 2015 15:28:23 +1000 Subject: [PATCH 10/35] * Build 239 --- CHANGELOG.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 30e04e06e..bdb7a20b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,5 @@ -* **Build 23x** (2015-03-xx) - - Installing plugins in the back-end has a new interface. - - Marketplace themes can now be installed using the back-end. +* **Build 239** (2015-04-06) + - Installing plugins has a new interface and themes can now be installed using the back-end. * **Build 236** (2015-03-28) - Default context of `manage` and `pivot` forms is now *create* and *update* respectively, instead of the old value *relation*. Use the `context` option to set it back to the old value (see Backend > Relations docs). From b806bd072084cbe2796e0e88250ef8141f425737 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Mon, 6 Apr 2015 15:31:33 +1000 Subject: [PATCH 11/35] Fixes installed theme count --- modules/system/controllers/updates/_install_themes.htm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/system/controllers/updates/_install_themes.htm b/modules/system/controllers/updates/_install_themes.htm index 9ea744a83..9b1f3d803 100644 --- a/modules/system/controllers/updates/_install_themes.htm +++ b/modules/system/controllers/updates/_install_themes.htm @@ -29,7 +29,7 @@

Installed themes - (0) + ()

From 93dd61efc71e64092a53fe21fd3ef4b630d8e9be Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Mon, 6 Apr 2015 16:25:43 +1000 Subject: [PATCH 12/35] Move the search term constraint under the same query group Refs https://github.com/octobercms/october/pull/775 --- modules/backend/widgets/Lists.php | 61 +++++++++++++++++-------------- 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/modules/backend/widgets/Lists.php b/modules/backend/widgets/Lists.php index 11295ea70..09abec637 100644 --- a/modules/backend/widgets/Lists.php +++ b/modules/backend/widgets/Lists.php @@ -361,25 +361,6 @@ class Lists extends WidgetBase $joins[] = $column->relation; } - /* - * Include any relation constraints - */ - if ($joins) { - foreach (array_unique($joins) as $join) { - /* - * Apply a supplied search term for relation columns and - * constrain the query only if there is something to search for - */ - $columnsToSearch = array_get($relationSearchable, $join, []); - - if (count($columnsToSearch) > 0) { - $query->whereHas($join, function ($_query) use ($columnsToSearch) { - $_query->searchWhere($this->searchTerm, $columnsToSearch); - }); - } - } - } - /* * Add eager loads to the query */ @@ -387,6 +368,39 @@ class Lists extends WidgetBase $query->with(array_unique($withs)); } + /* + * Apply search term + */ + $query->where(function ($innerQuery) use ($primarySearchable, $relationSearchable, $joins) { + + /* + * Search primary columns + */ + if (count($primarySearchable) > 0) { + $innerQuery->orSearchWhere($this->searchTerm, $primarySearchable); + } + + /* + * Search relation columns + */ + if ($joins) { + foreach (array_unique($joins) as $join) { + /* + * Apply a supplied search term for relation columns and + * constrain the query only if there is something to search for + */ + $columnsToSearch = array_get($relationSearchable, $join, []); + + if (count($columnsToSearch) > 0) { + $innerQuery->orWhereHas($join, function ($_query) use ($columnsToSearch) { + $_query->searchWhere($this->searchTerm, $columnsToSearch); + }); + } + } + } + + }); + /* * Custom select queries */ @@ -428,15 +442,6 @@ class Lists extends WidgetBase } } - /* - * Apply a supplied search term for primary columns - */ - if (count($primarySearchable) > 0) { - $query->where(function ($innerQuery) use ($primarySearchable) { - $innerQuery->searchWhere($this->searchTerm, $primarySearchable); - }); - } - /* * Apply sorting */ From 13b14729fd04a345a9735256c6d657969634a661 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Mon, 6 Apr 2015 16:57:53 +1000 Subject: [PATCH 13/35] Don't allow a record to be clicked if there is no form to display --- modules/backend/behaviors/RelationController.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/modules/backend/behaviors/RelationController.php b/modules/backend/behaviors/RelationController.php index 0c5d97140..d26dddedd 100644 --- a/modules/backend/behaviors/RelationController.php +++ b/modules/backend/behaviors/RelationController.php @@ -561,6 +561,12 @@ class RelationController extends ControllerBehavior if ($config->recordUrl) { $defaultOnClick = null; } + elseif ( + !$this->makeConfigForMode('manage', 'form', false) && + !$this->makeConfigForMode('pivot', 'form', false) + ) { + $defaultOnClick = null; + } $config->recordOnClick = $this->getConfig('view[recordOnClick]', $defaultOnClick); @@ -1267,7 +1273,7 @@ class RelationController extends ControllerBehavior * Returns the configuration for a mode (view, manage, pivot) for an * expected type (list, form). Uses fallback configuration. */ - protected function makeConfigForMode($mode = 'view', $type = 'list') + protected function makeConfigForMode($mode = 'view', $type = 'list', $throwException = true) { $config = null; @@ -1293,12 +1299,16 @@ class RelationController extends ControllerBehavior * - view.list => manage.list */ if (!$config) { - if ($mode == 'manage' && $type == 'list') { return $this->makeConfigForMode('view', $type); } - throw new ApplicationException('Missing configuration for '.$mode.'.'.$type.' in RelationController definition '.$this->field); + if ($throwException) { + throw new ApplicationException('Missing configuration for '.$mode.'.'.$type.' in RelationController definition '.$this->field); + } + else { + return false; + } } return $this->makeConfig($config); From bc64201f02721bdfc44f7e628f5e819765d62411 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Mon, 6 Apr 2015 18:01:03 +1000 Subject: [PATCH 14/35] Fixes bug not displaying recommended plugins --- modules/system/controllers/Updates.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/system/controllers/Updates.php b/modules/system/controllers/Updates.php index 21c7889ff..d6aec0024 100644 --- a/modules/system/controllers/Updates.php +++ b/modules/system/controllers/Updates.php @@ -711,7 +711,7 @@ class Updates extends Controller } } - return $popular; + return array_values($popular); } } From ace4175fdd05072c73a68a68d1a690db56476895 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Mon, 6 Apr 2015 18:05:56 +1000 Subject: [PATCH 15/35] CSS -> LESS --- modules/system/assets/css/updates/install.css | 15 +- .../system/assets/less/updates/install.less | 438 +++++++++--------- 2 files changed, 230 insertions(+), 223 deletions(-) diff --git a/modules/system/assets/css/updates/install.css b/modules/system/assets/css/updates/install.css index ddf0db7df..7bcd70388 100644 --- a/modules/system/assets/css/updates/install.css +++ b/modules/system/assets/css/updates/install.css @@ -7,14 +7,6 @@ margin: 0; padding: 10px 0; overflow: hidden; - /* clearfix */ -} -.product-list li button, -.product-list li .image, -.product-list li .details { - -webkit-transition: opacity .2s linear; - -moz-transition: opacity .2s linear; - transition: opacity .2s linear; } .product-list li button { position: absolute; @@ -25,6 +17,13 @@ opacity: 0; outline: none; } +.product-list li button, +.product-list li .image, +.product-list li .details { + -webkit-transition: opacity .2s linear; + -moz-transition: opacity .2s linear; + transition: opacity .2s linear; +} .product-list li:hover button { opacity: .3; } diff --git a/modules/system/assets/less/updates/install.less b/modules/system/assets/less/updates/install.less index 08c3694ca..338e0d84e 100644 --- a/modules/system/assets/less/updates/install.less +++ b/modules/system/assets/less/updates/install.less @@ -5,187 +5,194 @@ font-size: 16px; color: #999; } + .product-list { margin: 0; padding: 10px 0; overflow: hidden; /* clearfix */ -} -.product-list li button, -.product-list li .image, -.product-list li .details { - -webkit-transition: opacity .2s linear; - -moz-transition: opacity .2s linear; - transition: opacity .2s linear; -} -.product-list li button { - position: absolute; - top: 0; - right: 0; - width: 20px; - height: 20px; - opacity: 0; - outline: none; -} -.product-list li:hover button { - opacity: .3; -} -.product-list li:hover button:hover { - opacity: .8; + li { + button { + position: absolute; + top: 0; + right: 0; + width: 20px; + height: 20px; + opacity: 0; + outline: none; + } + + button, .image, .details { + -webkit-transition: opacity .2s linear; + -moz-transition: opacity .2s linear; + transition: opacity .2s linear; + } + } + li:hover { + button { + opacity: .3; + } + button:hover { + opacity: .8; + } + } } .plugin-list { - + li { + list-style: none; + position: relative; + border-bottom: 1px solid #E6E9E9; + margin-bottom: 10px; + padding-bottom: 10px; + overflow: hidden; + .image { + float: left; + margin-right: 15px; + margin-left: 5px; + img { + width: 50px; + height: 50px; + } + } + .details { + p { + padding: 0; + margin: 3px 0 0 0; + color: #808C8D; + } + } + h4 { + padding: 5px 0 0; + margin: 0; + color: #C03F31; + font-weight: 400; + } + } + li:last-child { + border-bottom: none; + } } -.plugin-list li { - list-style: none; - position: relative; - border-bottom: 1px solid #E6E9E9; - margin-bottom: 10px; - padding-bottom: 10px; - overflow: hidden; -} -.plugin-list li:last-child { - border-bottom: none; -} -.plugin-list li .image { - float: left; - margin-right: 15px; - margin-left: 5px; -} -.plugin-list li .image img { - width: 50px; - height: 50px; -} -.plugin-list li .details p { - padding: 0; - margin: 3px 0 0 0; - color: #808C8D; -} -.plugin-list li h4 { - padding: 5px 0 0; - margin: 0; - color: #C03F31; - font-weight: 400; +.theme-list { + li { + float: left; + padding: 0; + margin: 0 10px 10px 0; + list-style: none; + border: 1px solid #E6E9E9; + background: #fff; + position: relative; + border-radius: 3px; + -webkit-transition: border .2s linear; + -moz-transition: border .2s linear; + transition: border .2s linear; + .image { + padding: 5px; + img { + width: 210px; + height: 140px; + } + } + .details { + position: absolute; + bottom: 0; + left: 0; + opacity: 0; + padding: 10px; + overflow: hidden; + } + h4 { + padding: 15px 0 0; + margin: 0; + } + p { + padding: 0; + margin: 0; + color: #999; + text-transform: uppercase; + font-size: 12px; + } + } + li:hover { + border-color: transparent; + .image { + opacity: 0; + } + .details { + opacity: 1; + } + } } -.theme-list li { - float: left; - padding: 0; - margin: 0 10px 10px 0; - list-style: none; - border: 1px solid #E6E9E9; - background: #fff; - position: relative; - border-radius: 3px; -} -.theme-list li:hover { - border-color: transparent; -} -.theme-list li { - -webkit-transition: border .2s linear; - -moz-transition: border .2s linear; - transition: border .2s linear; -} -.theme-list li .image { - padding: 5px; -} -.theme-list li .image img { - width: 210px; - height: 140px; -} -.theme-list li:hover .image { - opacity: 0; -} -.theme-list li .details { - position: absolute; - bottom: 0; - left: 0; - opacity: 0; - padding: 10px; - overflow: hidden; -} -.theme-list li:hover .details { - opacity: 1; -} -.theme-list li h4 { - padding: 15px 0 0; - margin: 0; -} -.theme-list li p { - padding: 0; - margin: 0; - color: #999; - text-transform: uppercase; - font-size: 12px; -} - -.suggested-products-container { -} .suggested-products { padding: 0; + .product { + padding: 0; + } + .image { + float: left; + position: relative; + img { + width: 40px; + height: 40px; + margin-top: 10px; + } + } + .details { + margin-left: 50px; + padding: 10px 0; + h5 { + margin: 0 0 3px; + font-size: 14px; + color: #C03F31; + font-weight: 400; + } + p { + font-size: 12px; + } + } + a { + color: #777; + background: #fff; + padding: 5px; + text-decoration: none; + display: block; + overflow: hidden; + border-bottom: 1px solid #E6E9E9; + } + a:hover { + color: #333; + background: #f9f9f9; + .image:after { + content: "+"; + color: #999; + font-size: 32px; + display: block; + width: 40px; + height: 40px; + text-align: center; + line-height: 40px; + position: absolute; + top: 7px; + left: 0; + } + .image { + img { + opacity: .5; + } + } + } } -.suggested-products .product { - padding: 0; -} -.suggested-products .image img { - width: 40px; - height: 40px; - margin-top: 10px; -} -.suggested-themes .image img { - width: 60px; - height: 40px; -} -.suggested-products .image { - float: left; - position: relative; -} -.suggested-products .details { - margin-left: 50px; - padding: 10px 0; -} -.suggested-themes .details { - margin-left: 70px; -} -.suggested-products .details h5 { - margin: 0 0 3px; - font-size: 14px; - color: #C03F31; - font-weight: 400; -} -.suggested-products .details p { - font-size: 12px; -} -.suggested-products a { - color: #777; - background: #fff; - padding: 5px; - text-decoration: none; - display: block; - overflow: hidden; - border-bottom: 1px solid #E6E9E9; -} -.suggested-products a:hover { - color: #333; - background: #f9f9f9; -} -.suggested-products a:hover .image { -} -.suggested-products a:hover .image:after { - content: "+"; - color: #999; - font-size: 32px; - display: block; - width: 40px; - height: 40px; - text-align: center; - line-height: 40px; - position: absolute; - top: 7px; - left: 0; -} -.suggested-products a:hover .image img { - opacity: .5; + +.suggested-themes { + .image { + img { + width: 60px; + height: 40px; + } + } + .details { + margin-left: 70px; + } } /*! @@ -199,12 +206,10 @@ text-align: left; padding-bottom: 15px; } - .twitter-typeahead { width: 100%; } -.typeahead, -.tt-hint { +.typeahead, .tt-hint { width: 100%; height: 46px; padding: 8px 12px; @@ -242,52 +247,55 @@ .tt-suggestion { font-size: 14px; line-height: 18px; + + { + .tt-suggestion { + font-size: 14px; + border-top: 1px solid #ccc; + } + } } -.tt-suggestion + .tt-suggestion { - font-size: 14px; - border-top: 1px solid #ccc; +.tt-suggestions { + .product-details { + padding: 5px; + overflow: hidden; + position: relative; + } + .product-image { + float: left; + margin-right: 10px; + img { + height: 45px; + width: 45px; + } + } + .product-name { + font-size: 20px; + padding-top: 5px; + } } -.tt-suggestions .product-details { - padding: 5px; - overflow: hidden; - position: relative; -} -.tt-suggestions .product-image { - float: left; - margin-right: 10px; -} -.tt-suggestions .product-image img { - height: 45px; - width: 45px; -} -.tt-suggestions .product-name { - font-size: 20px; - padding-top: 5px; -} -.tt-suggestions .product-description { -} - .tt-suggestion.tt-cursor { cursor: pointer; -} -.tt-suggestion.tt-cursor .product-details { - color: #333; - background: #f9f9f9; - border-color: #f0f0f0; -} -.tt-suggestion.tt-cursor .product-details .product-image:after { - content: "+"; - color: #999; - font-size: 38px; - display: block; - width: 45px; - height: 45px; - text-align: center; - line-height: 45px; - position: absolute; - top: 5px; - left: 5px; -} -.tt-suggestion.tt-cursor .product-details .product-image img { - opacity: .5; + .product-details { + color: #333; + background: #f9f9f9; + border-color: #f0f0f0; + .product-image:after { + content: "+"; + color: #999; + font-size: 38px; + display: block; + width: 45px; + height: 45px; + text-align: center; + line-height: 45px; + position: absolute; + top: 5px; + left: 5px; + } + .product-image { + img { + opacity: .5; + } + } + } } From ce29b92fe3d788cdb694bdc124edde68678aed66 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Mon, 6 Apr 2015 22:27:47 +1000 Subject: [PATCH 16/35] Update Demo theme: Bootstrap v3.3.4 --- themes/demo/assets/css/theme.css | 1340 ++++++++++++----- .../demo/assets/vendor/bootstrap/js/affix.js | 95 +- .../demo/assets/vendor/bootstrap/js/alert.js | 24 +- .../demo/assets/vendor/bootstrap/js/button.js | 37 +- .../assets/vendor/bootstrap/js/carousel.js | 126 +- .../assets/vendor/bootstrap/js/collapse.js | 127 +- .../assets/vendor/bootstrap/js/dropdown.js | 56 +- .../demo/assets/vendor/bootstrap/js/modal.js | 174 ++- .../assets/vendor/bootstrap/js/popover.js | 26 +- .../assets/vendor/bootstrap/js/scrollspy.js | 97 +- themes/demo/assets/vendor/bootstrap/js/tab.js | 76 +- .../assets/vendor/bootstrap/js/tooltip.js | 243 ++- .../assets/vendor/bootstrap/js/transition.js | 27 +- .../assets/vendor/bootstrap/less/alerts.less | 12 +- .../assets/vendor/bootstrap/less/badges.less | 51 +- .../vendor/bootstrap/less/bootstrap.less | 5 +- .../vendor/bootstrap/less/button-groups.less | 43 +- .../assets/vendor/bootstrap/less/buttons.less | 21 +- .../vendor/bootstrap/less/carousel.less | 51 +- .../assets/vendor/bootstrap/less/close.less | 1 + .../assets/vendor/bootstrap/less/code.less | 8 +- .../bootstrap/less/component-animations.less | 14 +- .../vendor/bootstrap/less/dropdowns.less | 15 +- .../assets/vendor/bootstrap/less/forms.less | 279 +++- .../vendor/bootstrap/less/glyphicons.less | 84 +- .../assets/vendor/bootstrap/less/grid.less | 24 +- .../vendor/bootstrap/less/input-groups.less | 13 +- .../vendor/bootstrap/less/jumbotron.less | 16 +- .../assets/vendor/bootstrap/less/labels.less | 2 +- .../vendor/bootstrap/less/list-group.less | 32 +- .../assets/vendor/bootstrap/less/media.less | 71 +- .../assets/vendor/bootstrap/less/mixins.less | 957 +----------- .../vendor/bootstrap/less/mixins/alerts.less | 14 + .../less/mixins/background-variant.less | 8 + .../bootstrap/less/mixins/border-radius.less | 18 + .../vendor/bootstrap/less/mixins/buttons.less | 52 + .../bootstrap/less/mixins/center-block.less | 7 + .../bootstrap/less/mixins/clearfix.less | 22 + .../vendor/bootstrap/less/mixins/forms.less | 85 ++ .../bootstrap/less/mixins/gradients.less | 59 + .../bootstrap/less/mixins/grid-framework.less | 91 ++ .../vendor/bootstrap/less/mixins/grid.less | 122 ++ .../bootstrap/less/mixins/hide-text.less | 21 + .../vendor/bootstrap/less/mixins/image.less | 33 + .../vendor/bootstrap/less/mixins/labels.less | 12 + .../bootstrap/less/mixins/list-group.less | 29 + .../bootstrap/less/mixins/nav-divider.less | 10 + .../less/mixins/nav-vertical-align.less | 9 + .../vendor/bootstrap/less/mixins/opacity.less | 8 + .../bootstrap/less/mixins/pagination.less | 23 + .../vendor/bootstrap/less/mixins/panels.less | 24 + .../bootstrap/less/mixins/progress-bar.less | 10 + .../bootstrap/less/mixins/reset-filter.less | 8 + .../vendor/bootstrap/less/mixins/resize.less | 6 + .../less/mixins/responsive-visibility.less | 15 + .../vendor/bootstrap/less/mixins/size.less | 10 + .../bootstrap/less/mixins/tab-focus.less | 9 + .../bootstrap/less/mixins/table-row.less | 28 + .../bootstrap/less/mixins/text-emphasis.less | 8 + .../bootstrap/less/mixins/text-overflow.less | 8 + .../less/mixins/vendor-prefixes.less | 227 +++ .../assets/vendor/bootstrap/less/modals.less | 30 +- .../assets/vendor/bootstrap/less/navbar.less | 94 +- .../assets/vendor/bootstrap/less/navs.less | 4 +- .../vendor/bootstrap/less/normalize.less | 44 +- .../assets/vendor/bootstrap/less/pager.less | 3 +- .../vendor/bootstrap/less/pagination.less | 2 +- .../assets/vendor/bootstrap/less/panels.less | 133 +- .../vendor/bootstrap/less/popovers.less | 34 +- .../assets/vendor/bootstrap/less/print.less | 194 +-- .../vendor/bootstrap/less/progress-bars.less | 17 +- .../bootstrap/less/responsive-embed.less | 35 + .../bootstrap/less/responsive-utilities.less | 117 +- .../vendor/bootstrap/less/scaffolding.less | 32 +- .../assets/vendor/bootstrap/less/tables.less | 33 +- .../assets/vendor/bootstrap/less/theme.less | 48 +- .../vendor/bootstrap/less/thumbnails.less | 4 +- .../assets/vendor/bootstrap/less/tooltip.less | 17 +- .../assets/vendor/bootstrap/less/type.less | 56 +- .../vendor/bootstrap/less/utilities.less | 1 - .../vendor/bootstrap/less/variables.less | 154 +- 81 files changed, 3908 insertions(+), 2267 deletions(-) create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/alerts.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/background-variant.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/border-radius.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/buttons.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/center-block.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/clearfix.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/forms.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/gradients.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/grid-framework.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/grid.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/hide-text.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/image.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/labels.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/list-group.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/nav-divider.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/nav-vertical-align.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/opacity.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/pagination.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/panels.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/progress-bar.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/reset-filter.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/resize.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/responsive-visibility.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/size.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/tab-focus.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/table-row.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/text-emphasis.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/text-overflow.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/mixins/vendor-prefixes.less create mode 100644 themes/demo/assets/vendor/bootstrap/less/responsive-embed.less diff --git a/themes/demo/assets/css/theme.css b/themes/demo/assets/css/theme.css index d9fe365fe..b41e904cd 100644 --- a/themes/demo/assets/css/theme.css +++ b/themes/demo/assets/css/theme.css @@ -9,7 +9,7 @@ * !! YOU HAVE BEEN WARNED !! MODIFY THIS FILE AT YOUR OWN RISK !! * */ -/*! normalize.css v3.0.0 | MIT License | git.io/normalize */ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ html { font-family: sans-serif; -ms-text-size-adjust: 100%; @@ -27,6 +27,7 @@ footer, header, hgroup, main, +menu, nav, section, summary { @@ -48,7 +49,7 @@ template { display: none; } a { - background: transparent; + background-color: transparent; } a:active, a:hover { @@ -189,12 +190,15 @@ td, th { padding: 0; } +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ @media print { - * { - text-shadow: none !important; - color: #000 !important; + *, + *:before, + *:after { background: transparent !important; + color: #000 !important; box-shadow: none !important; + text-shadow: none !important; } a, a:visited { @@ -206,8 +210,8 @@ th { abbr[title]:after { content: " (" attr(title) ")"; } - a[href^="javascript:"]:after, - a[href^="#"]:after { + a[href^="#"]:after, + a[href^="javascript:"]:after { content: ""; } pre, @@ -241,10 +245,6 @@ th { .navbar { display: none; } - .table td, - .table th { - background-color: #fff !important; - } .btn > .caret, .dropup > .btn > .caret { border-top-color: #000 !important; @@ -255,6 +255,10 @@ th { .table { border-collapse: collapse !important; } + .table td, + .table th { + background-color: #fff !important; + } .table-bordered th, .table-bordered td { border: 1px solid #ddd !important; @@ -272,7 +276,7 @@ th { box-sizing: border-box; } html { - font-size: 62.5%; + font-size: 10px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } body { @@ -291,12 +295,12 @@ textarea { line-height: inherit; } a { - color: #428bca; + color: #337ab7; text-decoration: none; } a:hover, a:focus { - color: #2a6496; + color: #23527c; text-decoration: underline; } a:focus { @@ -310,7 +314,11 @@ figure { img { vertical-align: middle; } -.img-responsive { +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { display: block; max-width: 100%; height: auto; @@ -325,6 +333,7 @@ img { border: 1px solid #dddddd; border-radius: 4px; -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; display: inline-block; max-width: 100%; @@ -349,6 +358,18 @@ hr { clip: rect(0, 0, 0, 0); border: 0; } +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +[role="button"] { + cursor: pointer; +} h1, h2, h3, @@ -392,7 +413,7 @@ h6 .small, .h6 .small { font-weight: normal; line-height: 1; - color: #999999; + color: #777777; } h1, .h1, @@ -470,7 +491,7 @@ p { .lead { margin-bottom: 20px; font-size: 16px; - font-weight: 200; + font-weight: 300; line-height: 1.4; } @media (min-width: 768px) { @@ -482,8 +503,10 @@ small, .small { font-size: 85%; } -cite { - font-style: normal; +mark, +.mark { + background-color: #fcf8e3; + padding: .2em; } .text-left { text-align: left; @@ -497,14 +520,26 @@ cite { .text-justify { text-align: justify; } +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} .text-muted { - color: #999999; + color: #777777; } .text-primary { - color: #428bca; + color: #337ab7; } a.text-primary:hover { - color: #3071a9; + color: #286090; } .text-success { color: #3c763d; @@ -532,10 +567,10 @@ a.text-danger:hover { } .bg-primary { color: #fff; - background-color: #428bca; + background-color: #337ab7; } a.bg-primary:hover { - background-color: #3071a9; + background-color: #286090; } .bg-success { background-color: #dff0d8; @@ -584,15 +619,13 @@ ol ol { .list-inline { padding-left: 0; list-style: none; + margin-left: -5px; } .list-inline > li { display: inline-block; padding-left: 5px; padding-right: 5px; } -.list-inline > li:first-child { - padding-left: 0; -} dl { margin-top: 0; margin-bottom: 20px; @@ -624,7 +657,7 @@ dd { abbr[title], abbr[data-original-title] { cursor: help; - border-bottom: 1px dotted #999999; + border-bottom: 1px dotted #777777; } .initialism { font-size: 90%; @@ -647,7 +680,7 @@ blockquote .small { display: block; font-size: 80%; line-height: 1.428571429; - color: #999999; + color: #777777; } blockquote footer:before, blockquote small:before, @@ -678,10 +711,6 @@ blockquote.pull-right small:after, blockquote.pull-right .small:after { content: '\00A0 \2014'; } -blockquote:before, -blockquote:after { - content: ""; -} address { margin-bottom: 20px; font-style: normal; @@ -698,7 +727,6 @@ code { font-size: 90%; color: #c7254e; background-color: #f9f2f4; - white-space: nowrap; border-radius: 4px; } kbd { @@ -709,6 +737,12 @@ kbd { border-radius: 3px; box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); } +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + box-shadow: none; +} pre { display: block; padding: 9.5px; @@ -847,7 +881,7 @@ pre code { right: 8.333333333333332%; } .col-xs-pull-0 { - right: 0%; + right: auto; } .col-xs-push-12 { left: 100%; @@ -886,7 +920,7 @@ pre code { left: 8.333333333333332%; } .col-xs-push-0 { - left: 0%; + left: auto; } .col-xs-offset-12 { margin-left: 100%; @@ -1004,7 +1038,7 @@ pre code { right: 8.333333333333332%; } .col-sm-pull-0 { - right: 0%; + right: auto; } .col-sm-push-12 { left: 100%; @@ -1043,7 +1077,7 @@ pre code { left: 8.333333333333332%; } .col-sm-push-0 { - left: 0%; + left: auto; } .col-sm-offset-12 { margin-left: 100%; @@ -1162,7 +1196,7 @@ pre code { right: 8.333333333333332%; } .col-md-pull-0 { - right: 0%; + right: auto; } .col-md-push-12 { left: 100%; @@ -1201,7 +1235,7 @@ pre code { left: 8.333333333333332%; } .col-md-push-0 { - left: 0%; + left: auto; } .col-md-offset-12 { margin-left: 100%; @@ -1320,7 +1354,7 @@ pre code { right: 8.333333333333332%; } .col-lg-pull-0 { - right: 0%; + right: auto; } .col-lg-push-12 { left: 100%; @@ -1359,7 +1393,7 @@ pre code { left: 8.333333333333332%; } .col-lg-push-0 { - left: 0%; + left: auto; } .col-lg-offset-12 { margin-left: 100%; @@ -1402,14 +1436,20 @@ pre code { } } table { - max-width: 100%; background-color: transparent; } +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777777; + text-align: left; +} th { text-align: left; } .table { width: 100%; + max-width: 100%; margin-bottom: 20px; } .table > thead > tr > th, @@ -1464,12 +1504,10 @@ th { .table-bordered > thead > tr > td { border-bottom-width: 2px; } -.table-striped > tbody > tr:nth-child(odd) > td, -.table-striped > tbody > tr:nth-child(odd) > th { +.table-striped > tbody > tr:nth-of-type(odd) { background-color: #f9f9f9; } -.table-hover > tbody > tr:hover > td, -.table-hover > tbody > tr:hover > th { +.table-hover > tbody > tr:hover { background-color: #f5f5f5; } table col[class*="col-"] { @@ -1500,6 +1538,7 @@ table th[class*="col-"] { .table-hover > tbody > tr > td.active:hover, .table-hover > tbody > tr > th.active:hover, .table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, .table-hover > tbody > tr.active:hover > th { background-color: #e8e8e8; } @@ -1520,6 +1559,7 @@ table th[class*="col-"] { .table-hover > tbody > tr > td.success:hover, .table-hover > tbody > tr > th.success:hover, .table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, .table-hover > tbody > tr.success:hover > th { background-color: #d0e9c6; } @@ -1540,6 +1580,7 @@ table th[class*="col-"] { .table-hover > tbody > tr > td.info:hover, .table-hover > tbody > tr > th.info:hover, .table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, .table-hover > tbody > tr.info:hover > th { background-color: #c4e3f3; } @@ -1560,6 +1601,7 @@ table th[class*="col-"] { .table-hover > tbody > tr > td.warning:hover, .table-hover > tbody > tr > th.warning:hover, .table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, .table-hover > tbody > tr.warning:hover > th { background-color: #faf2cc; } @@ -1580,18 +1622,21 @@ table th[class*="col-"] { .table-hover > tbody > tr > td.danger:hover, .table-hover > tbody > tr > th.danger:hover, .table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, .table-hover > tbody > tr.danger:hover > th { background-color: #ebcccc; } -@media (max-width: 767px) { +.table-responsive { + overflow-x: auto; + min-height: 0.01%; +} +@media screen and (max-width: 767px) { .table-responsive { width: 100%; margin-bottom: 15px; overflow-y: hidden; - overflow-x: scroll; -ms-overflow-style: -ms-autohiding-scrollbar; border: 1px solid #dddddd; - -webkit-overflow-scrolling: touch; } .table-responsive > .table { margin-bottom: 0; @@ -1649,6 +1694,7 @@ legend { } label { display: inline-block; + max-width: 100%; margin-bottom: 5px; font-weight: bold; } @@ -1661,7 +1707,6 @@ input[type="radio"], input[type="checkbox"] { margin: 4px 0 0; margin-top: 1px \9; - /* IE8-9 */ line-height: normal; } input[type="file"] { @@ -1704,6 +1749,7 @@ output { -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; } .form-control:focus { @@ -1712,9 +1758,6 @@ output { -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); } -.form-control:-moz-placeholder { - color: #999999; -} .form-control::-moz-placeholder { color: #999999; opacity: 1; @@ -1728,30 +1771,62 @@ output { .form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control { - cursor: not-allowed; background-color: #eeeeee; opacity: 1; } +.form-control[disabled], +fieldset[disabled] .form-control { + cursor: not-allowed; +} textarea.form-control { height: auto; } -input[type="date"] { - line-height: 34px; +input[type="search"] { + -webkit-appearance: none; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"], + input[type="time"], + input[type="datetime-local"], + input[type="month"] { + line-height: 34px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm, + .input-group-sm input[type="date"], + .input-group-sm input[type="time"], + .input-group-sm input[type="datetime-local"], + .input-group-sm input[type="month"] { + line-height: 30px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg, + .input-group-lg input[type="date"], + .input-group-lg input[type="time"], + .input-group-lg input[type="datetime-local"], + .input-group-lg input[type="month"] { + line-height: 46px; + } } .form-group { margin-bottom: 15px; } .radio, .checkbox { + position: relative; display: block; - min-height: 20px; margin-top: 10px; margin-bottom: 10px; - padding-left: 20px; } .radio label, .checkbox label { - display: inline; + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; font-weight: normal; cursor: pointer; } @@ -1759,8 +1834,9 @@ input[type="date"] { .radio-inline input[type="radio"], .checkbox input[type="checkbox"], .checkbox-inline input[type="checkbox"] { - float: left; + position: absolute; margin-left: -20px; + margin-top: 4px \9; } .radio + .radio, .checkbox + .checkbox { @@ -1768,6 +1844,7 @@ input[type="date"] { } .radio-inline, .checkbox-inline { + position: relative; display: inline-block; padding-left: 20px; margin-bottom: 0; @@ -1782,18 +1859,35 @@ input[type="date"] { } input[type="radio"][disabled], input[type="checkbox"][disabled], -.radio[disabled], -.radio-inline[disabled], -.checkbox[disabled], -.checkbox-inline[disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"], -fieldset[disabled] .radio, +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox, fieldset[disabled] .checkbox-inline { cursor: not-allowed; } +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; + min-height: 34px; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-left: 0; + padding-right: 0; +} .input-sm { height: 30px; padding: 5px 10px; @@ -1809,11 +1903,33 @@ textarea.input-sm, select[multiple].input-sm { height: auto; } +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.form-group-sm .form-control { + height: 30px; + line-height: 30px; +} +textarea.form-group-sm .form-control, +select[multiple].form-group-sm .form-control { + height: auto; +} +.form-group-sm .form-control-static { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + min-height: 32px; +} .input-lg { height: 46px; padding: 10px 16px; font-size: 18px; - line-height: 1.33; + line-height: 1.3333333; border-radius: 6px; } select.input-lg { @@ -1824,28 +1940,66 @@ textarea.input-lg, select[multiple].input-lg { height: auto; } +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.form-group-lg .form-control { + height: 46px; + line-height: 46px; +} +textarea.form-group-lg .form-control, +select[multiple].form-group-lg .form-control { + height: auto; +} +.form-group-lg .form-control-static { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + min-height: 38px; +} .has-feedback { position: relative; } .has-feedback .form-control { padding-right: 42.5px; } -.has-feedback .form-control-feedback { +.form-control-feedback { position: absolute; - top: 25px; + top: 0; right: 0; + z-index: 2; display: block; width: 34px; height: 34px; line-height: 34px; text-align: center; + pointer-events: none; +} +.input-lg + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} +.input-sm + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; } .has-success .help-block, .has-success .control-label, .has-success .radio, .has-success .checkbox, .has-success .radio-inline, -.has-success .checkbox-inline { +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { color: #3c763d; } .has-success .form-control { @@ -1871,7 +2025,11 @@ select[multiple].input-lg { .has-warning .radio, .has-warning .checkbox, .has-warning .radio-inline, -.has-warning .checkbox-inline { +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { color: #8a6d3b; } .has-warning .form-control { @@ -1897,7 +2055,11 @@ select[multiple].input-lg { .has-error .radio, .has-error .checkbox, .has-error .radio-inline, -.has-error .checkbox-inline { +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { color: #a94442; } .has-error .form-control { @@ -1918,8 +2080,11 @@ select[multiple].input-lg { .has-error .form-control-feedback { color: #a94442; } -.form-control-static { - margin-bottom: 0; +.has-feedback label ~ .form-control-feedback { + top: 25px; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; } .help-block { display: block; @@ -1938,6 +2103,21 @@ select[multiple].input-lg { width: auto; vertical-align: middle; } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } .form-inline .control-label { margin-bottom: 0; vertical-align: middle; @@ -1947,19 +2127,21 @@ select[multiple].input-lg { display: inline-block; margin-top: 0; margin-bottom: 0; - padding-left: 0; vertical-align: middle; } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] { - float: none; + position: relative; margin-left: 0; } .form-inline .has-feedback .form-control-feedback { top: 0; } } -.form-horizontal .control-label, .form-horizontal .radio, .form-horizontal .checkbox, .form-horizontal .radio-inline, @@ -1976,24 +2158,33 @@ select[multiple].input-lg { margin-left: -15px; margin-right: -15px; } -.form-horizontal .form-control-static { - padding-top: 7px; -} @media (min-width: 768px) { .form-horizontal .control-label { text-align: right; + margin-bottom: 0; + padding-top: 7px; } } .form-horizontal .has-feedback .form-control-feedback { - top: 0; right: 15px; } +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 14.333333px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + } +} .btn { display: inline-block; margin-bottom: 0; font-weight: normal; text-align: center; vertical-align: middle; + touch-action: manipulation; cursor: pointer; background-image: none; border: 1px solid transparent; @@ -2005,16 +2196,21 @@ select[multiple].input-lg { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; - -o-user-select: none; user-select: none; } -.btn:focus { +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { outline: thin dotted; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .btn:hover, -.btn:focus { +.btn:focus, +.btn.focus { color: #333333; text-decoration: none; } @@ -2042,16 +2238,17 @@ fieldset[disabled] .btn { } .btn-default:hover, .btn-default:focus, +.btn-default.focus, .btn-default:active, .btn-default.active, -.open .dropdown-toggle.btn-default { +.open > .dropdown-toggle.btn-default { color: #333333; - background-color: #ebebeb; + background-color: #e6e6e6; border-color: #adadad; } .btn-default:active, .btn-default.active, -.open .dropdown-toggle.btn-default { +.open > .dropdown-toggle.btn-default { background-image: none; } .btn-default.disabled, @@ -2063,6 +2260,9 @@ fieldset[disabled] .btn-default:hover, .btn-default.disabled:focus, .btn-default[disabled]:focus, fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus, .btn-default.disabled:active, .btn-default[disabled]:active, fieldset[disabled] .btn-default:active, @@ -2078,21 +2278,22 @@ fieldset[disabled] .btn-default.active { } .btn-primary { color: #ffffff; - background-color: #428bca; - border-color: #357ebd; + background-color: #337ab7; + border-color: #2e6da4; } .btn-primary:hover, .btn-primary:focus, +.btn-primary.focus, .btn-primary:active, .btn-primary.active, -.open .dropdown-toggle.btn-primary { +.open > .dropdown-toggle.btn-primary { color: #ffffff; - background-color: #3276b1; - border-color: #285e8e; + background-color: #286090; + border-color: #204d74; } .btn-primary:active, .btn-primary.active, -.open .dropdown-toggle.btn-primary { +.open > .dropdown-toggle.btn-primary { background-image: none; } .btn-primary.disabled, @@ -2104,17 +2305,20 @@ fieldset[disabled] .btn-primary:hover, .btn-primary.disabled:focus, .btn-primary[disabled]:focus, fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus, .btn-primary.disabled:active, .btn-primary[disabled]:active, fieldset[disabled] .btn-primary:active, .btn-primary.disabled.active, .btn-primary[disabled].active, fieldset[disabled] .btn-primary.active { - background-color: #428bca; - border-color: #357ebd; + background-color: #337ab7; + border-color: #2e6da4; } .btn-primary .badge { - color: #428bca; + color: #337ab7; background-color: #ffffff; } .btn-success { @@ -2124,16 +2328,17 @@ fieldset[disabled] .btn-primary.active { } .btn-success:hover, .btn-success:focus, +.btn-success.focus, .btn-success:active, .btn-success.active, -.open .dropdown-toggle.btn-success { +.open > .dropdown-toggle.btn-success { color: #ffffff; - background-color: #47a447; + background-color: #449d44; border-color: #398439; } .btn-success:active, .btn-success.active, -.open .dropdown-toggle.btn-success { +.open > .dropdown-toggle.btn-success { background-image: none; } .btn-success.disabled, @@ -2145,6 +2350,9 @@ fieldset[disabled] .btn-success:hover, .btn-success.disabled:focus, .btn-success[disabled]:focus, fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus, .btn-success.disabled:active, .btn-success[disabled]:active, fieldset[disabled] .btn-success:active, @@ -2165,16 +2373,17 @@ fieldset[disabled] .btn-success.active { } .btn-info:hover, .btn-info:focus, +.btn-info.focus, .btn-info:active, .btn-info.active, -.open .dropdown-toggle.btn-info { +.open > .dropdown-toggle.btn-info { color: #ffffff; - background-color: #39b3d7; + background-color: #31b0d5; border-color: #269abc; } .btn-info:active, .btn-info.active, -.open .dropdown-toggle.btn-info { +.open > .dropdown-toggle.btn-info { background-image: none; } .btn-info.disabled, @@ -2186,6 +2395,9 @@ fieldset[disabled] .btn-info:hover, .btn-info.disabled:focus, .btn-info[disabled]:focus, fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus, .btn-info.disabled:active, .btn-info[disabled]:active, fieldset[disabled] .btn-info:active, @@ -2206,16 +2418,17 @@ fieldset[disabled] .btn-info.active { } .btn-warning:hover, .btn-warning:focus, +.btn-warning.focus, .btn-warning:active, .btn-warning.active, -.open .dropdown-toggle.btn-warning { +.open > .dropdown-toggle.btn-warning { color: #ffffff; - background-color: #ed9c28; + background-color: #ec971f; border-color: #d58512; } .btn-warning:active, .btn-warning.active, -.open .dropdown-toggle.btn-warning { +.open > .dropdown-toggle.btn-warning { background-image: none; } .btn-warning.disabled, @@ -2227,6 +2440,9 @@ fieldset[disabled] .btn-warning:hover, .btn-warning.disabled:focus, .btn-warning[disabled]:focus, fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus, .btn-warning.disabled:active, .btn-warning[disabled]:active, fieldset[disabled] .btn-warning:active, @@ -2247,16 +2463,17 @@ fieldset[disabled] .btn-warning.active { } .btn-danger:hover, .btn-danger:focus, +.btn-danger.focus, .btn-danger:active, .btn-danger.active, -.open .dropdown-toggle.btn-danger { +.open > .dropdown-toggle.btn-danger { color: #ffffff; - background-color: #d2322d; + background-color: #c9302c; border-color: #ac2925; } .btn-danger:active, .btn-danger.active, -.open .dropdown-toggle.btn-danger { +.open > .dropdown-toggle.btn-danger { background-image: none; } .btn-danger.disabled, @@ -2268,6 +2485,9 @@ fieldset[disabled] .btn-danger:hover, .btn-danger.disabled:focus, .btn-danger[disabled]:focus, fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus, .btn-danger.disabled:active, .btn-danger[disabled]:active, fieldset[disabled] .btn-danger:active, @@ -2282,13 +2502,13 @@ fieldset[disabled] .btn-danger.active { background-color: #ffffff; } .btn-link { - color: #428bca; + color: #337ab7; font-weight: normal; - cursor: pointer; border-radius: 0; } .btn-link, .btn-link:active, +.btn-link.active, .btn-link[disabled], fieldset[disabled] .btn-link { background-color: transparent; @@ -2303,7 +2523,7 @@ fieldset[disabled] .btn-link { } .btn-link:hover, .btn-link:focus { - color: #2a6496; + color: #23527c; text-decoration: underline; background-color: transparent; } @@ -2311,22 +2531,25 @@ fieldset[disabled] .btn-link { fieldset[disabled] .btn-link:hover, .btn-link[disabled]:focus, fieldset[disabled] .btn-link:focus { - color: #999999; + color: #777777; text-decoration: none; } -.btn-lg { +.btn-lg, +.btn-group-lg > .btn { padding: 10px 16px; font-size: 18px; - line-height: 1.33; + line-height: 1.3333333; border-radius: 6px; } -.btn-sm { +.btn-sm, +.btn-group-sm > .btn { padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } -.btn-xs { +.btn-xs, +.btn-group-xs > .btn { padding: 1px 5px; font-size: 12px; line-height: 1.5; @@ -2335,8 +2558,6 @@ fieldset[disabled] .btn-link:focus { .btn-block { display: block; width: 100%; - padding-left: 0; - padding-right: 0; } .btn-block + .btn-block { margin-top: 5px; @@ -2349,6 +2570,7 @@ input[type="button"].btn-block { .fade { opacity: 0; -webkit-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; transition: opacity 0.15s linear; } .fade.in { @@ -2360,12 +2582,22 @@ input[type="button"].btn-block { .collapse.in { display: block; } +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} .collapsing { position: relative; height: 0; overflow: hidden; - -webkit-transition: height 0.35s ease; - transition: height 0.35s ease; + -webkit-transition-property: height, visibility; + transition-property: height, visibility; + -webkit-transition-duration: 0.35s; + transition-duration: 0.35s; + -webkit-transition-timing-function: ease; + transition-timing-function: ease; } .caret { display: inline-block; @@ -2373,10 +2605,11 @@ input[type="button"].btn-block { height: 0; margin-left: 2px; vertical-align: middle; - border-top: 4px solid; + border-top: 4px dashed; border-right: 4px solid transparent; border-left: 4px solid transparent; } +.dropup, .dropdown { position: relative; } @@ -2395,6 +2628,7 @@ input[type="button"].btn-block { margin: 2px 0 0; list-style: none; font-size: 14px; + text-align: left; background-color: #ffffff; border: 1px solid #cccccc; border: 1px solid rgba(0, 0, 0, 0.15); @@ -2434,12 +2668,12 @@ input[type="button"].btn-block { color: #ffffff; text-decoration: none; outline: 0; - background-color: #428bca; + background-color: #337ab7; } .dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { - color: #999999; + color: #777777; } .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { @@ -2468,7 +2702,8 @@ input[type="button"].btn-block { padding: 3px 20px; font-size: 12px; line-height: 1.428571429; - color: #999999; + color: #777777; + white-space: nowrap; } .dropdown-backdrop { position: fixed; @@ -2492,7 +2727,7 @@ input[type="button"].btn-block { .navbar-fixed-bottom .dropdown .dropdown-menu { top: auto; bottom: 100%; - margin-bottom: 1px; + margin-bottom: 2px; } @media (min-width: 768px) { .navbar-right .dropdown-menu { @@ -2525,10 +2760,6 @@ input[type="button"].btn-block { .btn-group-vertical > .btn.active { z-index: 2; } -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus { - outline: none; -} .btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn, @@ -2568,12 +2799,12 @@ input[type="button"].btn-block { .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { border-radius: 0; } -.btn-group > .btn-group:first-child > .btn:last-child, -.btn-group > .btn-group:first-child > .dropdown-toggle { +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { border-bottom-right-radius: 0; border-top-right-radius: 0; } -.btn-group > .btn-group:last-child > .btn:first-child { +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { border-bottom-left-radius: 0; border-top-left-radius: 0; } @@ -2581,24 +2812,6 @@ input[type="button"].btn-block { .btn-group.open .dropdown-toggle { outline: 0; } -.btn-group-xs > .btn { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} .btn-group > .btn + .dropdown-toggle { padding-left: 8px; padding-right: 8px; @@ -2683,9 +2896,16 @@ input[type="button"].btn-block { .btn-group-justified > .btn-group .btn { width: 100%; } -[data-toggle="buttons"] > .btn > input[type="radio"], -[data-toggle="buttons"] > .btn > input[type="checkbox"] { - display: none; +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; } .input-group { position: relative; @@ -2698,6 +2918,8 @@ input[type="button"].btn-block { padding-right: 0; } .input-group .form-control { + position: relative; + z-index: 2; float: left; width: 100%; margin-bottom: 0; @@ -2708,7 +2930,7 @@ input[type="button"].btn-block { height: 46px; padding: 10px 16px; font-size: 18px; - line-height: 1.33; + line-height: 1.3333333; border-radius: 6px; } select.input-group-lg > .form-control, @@ -2859,11 +3081,11 @@ select[multiple].input-group-sm > .input-group-btn > .btn { background-color: #eeeeee; } .nav > li.disabled > a { - color: #999999; + color: #777777; } .nav > li.disabled > a:hover, .nav > li.disabled > a:focus { - color: #999999; + color: #777777; text-decoration: none; background-color: transparent; cursor: not-allowed; @@ -2872,7 +3094,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { .nav .open > a:hover, .nav .open > a:focus { background-color: #eeeeee; - border-color: #428bca; + border-color: #337ab7; } .nav .nav-divider { height: 1px; @@ -2965,7 +3187,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { .nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus { color: #ffffff; - background-color: #428bca; + background-color: #337ab7; } .nav-stacked > li { float: none; @@ -3048,7 +3270,6 @@ select[multiple].input-group-sm > .input-group-btn > .btn { } } .navbar-collapse { - max-height: 340px; overflow-x: visible; padding-right: 15px; padding-left: 15px; @@ -3081,6 +3302,16 @@ select[multiple].input-group-sm > .input-group-btn > .btn { padding-right: 0; } } +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} .container > .navbar-header, .container-fluid > .navbar-header, .container > .navbar-collapse, @@ -3139,6 +3370,9 @@ select[multiple].input-group-sm > .input-group-btn > .btn { .navbar-brand:focus { text-decoration: none; } +.navbar-brand > img { + display: block; +} @media (min-width: 768px) { .navbar > .container .navbar-brand, .navbar > .container-fluid .navbar-brand { @@ -3158,7 +3392,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { border-radius: 4px; } .navbar-toggle:focus { - outline: none; + outline: 0; } .navbar-toggle .icon-bar { display: block; @@ -3216,19 +3450,6 @@ select[multiple].input-group-sm > .input-group-btn > .btn { padding-top: 15px; padding-bottom: 15px; } - .navbar-nav.navbar-right:last-child { - margin-right: -15px; - } -} -@media (min-width: 768px) { - .navbar-left { - float: left !important; - float: left; - } - .navbar-right { - float: right !important; - float: right; - } } .navbar-form { margin-left: -15px; @@ -3252,6 +3473,21 @@ select[multiple].input-group-sm > .input-group-btn > .btn { width: auto; vertical-align: middle; } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } .navbar-form .control-label { margin-bottom: 0; vertical-align: middle; @@ -3261,12 +3497,15 @@ select[multiple].input-group-sm > .input-group-btn > .btn { display: inline-block; margin-top: 0; margin-bottom: 0; - padding-left: 0; vertical-align: middle; } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } .navbar-form .radio input[type="radio"], .navbar-form .checkbox input[type="checkbox"] { - float: none; + position: relative; margin-left: 0; } .navbar-form .has-feedback .form-control-feedback { @@ -3277,6 +3516,9 @@ select[multiple].input-group-sm > .input-group-btn > .btn { .navbar-form .form-group { margin-bottom: 5px; } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } } @media (min-width: 768px) { .navbar-form { @@ -3289,9 +3531,6 @@ select[multiple].input-group-sm > .input-group-btn > .btn { -webkit-box-shadow: none; box-shadow: none; } - .navbar-form.navbar-right:last-child { - margin-right: -15px; - } } .navbar-nav > li > .dropdown-menu { margin-top: 0; @@ -3299,6 +3538,9 @@ select[multiple].input-group-sm > .input-group-btn > .btn { border-top-left-radius: 0; } .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-right-radius: 4px; + border-top-left-radius: 4px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; } @@ -3324,7 +3566,18 @@ select[multiple].input-group-sm > .input-group-btn > .btn { margin-left: 15px; margin-right: 15px; } - .navbar-text.navbar-right:last-child { +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + float: left; + } + .navbar-right { + float: right !important; + float: right; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { margin-right: 0; } } @@ -3411,12 +3664,25 @@ select[multiple].input-group-sm > .input-group-btn > .btn { .navbar-default .navbar-link:hover { color: #333333; } +.navbar-default .btn-link { + color: #777777; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #333333; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #cccccc; +} .navbar-inverse { background-color: #222222; border-color: #080808; } .navbar-inverse .navbar-brand { - color: #999999; + color: #9d9d9d; } .navbar-inverse .navbar-brand:hover, .navbar-inverse .navbar-brand:focus { @@ -3424,10 +3690,10 @@ select[multiple].input-group-sm > .input-group-btn > .btn { background-color: transparent; } .navbar-inverse .navbar-text { - color: #999999; + color: #9d9d9d; } .navbar-inverse .navbar-nav > li > a { - color: #999999; + color: #9d9d9d; } .navbar-inverse .navbar-nav > li > a:hover, .navbar-inverse .navbar-nav > li > a:focus { @@ -3474,7 +3740,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { background-color: #080808; } .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #999999; + color: #9d9d9d; } .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { @@ -3495,11 +3761,24 @@ select[multiple].input-group-sm > .input-group-btn > .btn { } } .navbar-inverse .navbar-link { - color: #999999; + color: #9d9d9d; } .navbar-inverse .navbar-link:hover { color: #ffffff; } +.navbar-inverse .btn-link { + color: #9d9d9d; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #ffffff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444444; +} .breadcrumb { padding: 8px 15px; margin-bottom: 20px; @@ -3516,7 +3795,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { color: #cccccc; } .breadcrumb > .active { - color: #999999; + color: #777777; } .pagination { display: inline-block; @@ -3534,7 +3813,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { padding: 6px 12px; line-height: 1.428571429; text-decoration: none; - color: #428bca; + color: #337ab7; background-color: #ffffff; border: 1px solid #dddddd; margin-left: -1px; @@ -3554,7 +3833,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { .pagination > li > span:hover, .pagination > li > a:focus, .pagination > li > span:focus { - color: #2a6496; + color: #23527c; background-color: #eeeeee; border-color: #dddddd; } @@ -3566,8 +3845,8 @@ select[multiple].input-group-sm > .input-group-btn > .btn { .pagination > .active > span:focus { z-index: 2; color: #ffffff; - background-color: #428bca; - border-color: #428bca; + background-color: #337ab7; + border-color: #337ab7; cursor: default; } .pagination > .disabled > span, @@ -3576,7 +3855,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { .pagination > .disabled > a, .pagination > .disabled > a:hover, .pagination > .disabled > a:focus { - color: #999999; + color: #777777; background-color: #ffffff; border-color: #dddddd; cursor: not-allowed; @@ -3645,7 +3924,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { .pager .disabled > a:hover, .pager .disabled > a:focus, .pager .disabled > span { - color: #999999; + color: #777777; background-color: #ffffff; cursor: not-allowed; } @@ -3661,8 +3940,8 @@ select[multiple].input-group-sm > .input-group-btn > .btn { vertical-align: baseline; border-radius: .25em; } -.label[href]:hover, -.label[href]:focus { +a.label:hover, +a.label:focus { color: #ffffff; text-decoration: none; cursor: pointer; @@ -3675,18 +3954,18 @@ select[multiple].input-group-sm > .input-group-btn > .btn { top: -1px; } .label-default { - background-color: #999999; + background-color: #777777; } .label-default[href]:hover, .label-default[href]:focus { - background-color: #808080; + background-color: #5e5e5e; } .label-primary { - background-color: #428bca; + background-color: #337ab7; } .label-primary[href]:hover, .label-primary[href]:focus { - background-color: #3071a9; + background-color: #286090; } .label-success { background-color: #5cb85c; @@ -3727,7 +4006,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { vertical-align: baseline; white-space: nowrap; text-align: center; - background-color: #999999; + background-color: #777777; border-radius: 10px; } .badge:empty { @@ -3737,7 +4016,8 @@ select[multiple].input-group-sm > .input-group-btn > .btn { position: relative; top: -1px; } -.btn-xs .badge { +.btn-xs .badge, +.btn-group-xs > .btn .badge { top: 0; padding: 1px 5px; } @@ -3747,16 +4027,22 @@ a.badge:focus { text-decoration: none; cursor: pointer; } -a.list-group-item.active > .badge, +.list-group-item.active > .badge, .nav-pills > .active > a > .badge { - color: #428bca; + color: #337ab7; background-color: #ffffff; } +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} .nav-pills > li > a > .badge { margin-left: 3px; } .jumbotron { - padding: 30px; + padding: 30px 15px; margin-bottom: 30px; color: inherit; background-color: #eeeeee; @@ -3770,7 +4056,11 @@ a.list-group-item.active > .badge, font-size: 21px; font-weight: 200; } -.container .jumbotron { +.jumbotron > hr { + border-top-color: #d5d5d5; +} +.container .jumbotron, +.container-fluid .jumbotron { border-radius: 6px; } .jumbotron .container { @@ -3778,10 +4068,10 @@ a.list-group-item.active > .badge, } @media screen and (min-width: 768px) { .jumbotron { - padding-top: 48px; - padding-bottom: 48px; + padding: 48px 0; } - .container .jumbotron { + .container .jumbotron, + .container-fluid .jumbotron { padding-left: 60px; padding-right: 60px; } @@ -3798,21 +4088,19 @@ a.list-group-item.active > .badge, background-color: #ffffff; border: 1px solid #dddddd; border-radius: 4px; - -webkit-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; + -webkit-transition: border 0.2s ease-in-out; + -o-transition: border 0.2s ease-in-out; + transition: border 0.2s ease-in-out; } .thumbnail > img, .thumbnail a > img { - display: block; - max-width: 100%; - height: auto; margin-left: auto; margin-right: auto; } a.thumbnail:hover, a.thumbnail:focus, a.thumbnail.active { - border-color: #428bca; + border-color: #337ab7; } .thumbnail .caption { padding: 9px; @@ -3838,10 +4126,12 @@ a.thumbnail.active { .alert > p + p { margin-top: 5px; } -.alert-dismissable { +.alert-dismissable, +.alert-dismissible { padding-right: 35px; } -.alert-dismissable .close { +.alert-dismissable .close, +.alert-dismissible .close { position: relative; top: -2px; right: -21px; @@ -3924,19 +4214,24 @@ a.thumbnail.active { line-height: 20px; color: #ffffff; text-align: center; - background-color: #428bca; + background-color: #337ab7; -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); -webkit-transition: width 0.6s ease; + -o-transition: width 0.6s ease; transition: width 0.6s ease; } -.progress-striped .progress-bar { +.progress-striped .progress-bar, +.progress-bar-striped { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-size: 40px 40px; } -.progress.active .progress-bar { +.progress.active .progress-bar, +.progress-bar.active { -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; animation: progress-bar-stripes 2s linear infinite; } .progress-bar-success { @@ -3944,6 +4239,7 @@ a.thumbnail.active { } .progress-striped .progress-bar-success { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-bar-info { @@ -3951,6 +4247,7 @@ a.thumbnail.active { } .progress-striped .progress-bar-info { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-bar-warning { @@ -3958,6 +4255,7 @@ a.thumbnail.active { } .progress-striped .progress-bar-warning { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-bar-danger { @@ -3965,31 +4263,49 @@ a.thumbnail.active { } .progress-striped .progress-bar-danger { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } -.media, -.media-body { - overflow: hidden; - zoom: 1; -} -.media, -.media .media { +.media { margin-top: 15px; } .media:first-child { margin-top: 0; } +.media, +.media-body { + zoom: 1; + overflow: hidden; +} +.media-body { + width: 10000px; +} .media-object { display: block; } -.media-heading { - margin: 0 0 5px; -} -.media > .pull-left { - margin-right: 10px; -} +.media-right, .media > .pull-right { - margin-left: 10px; + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} +.media-middle { + vertical-align: middle; +} +.media-bottom { + vertical-align: bottom; +} +.media-heading { + margin-top: 0; + margin-bottom: 5px; } .media-list { padding-left: 0; @@ -4016,12 +4332,6 @@ a.thumbnail.active { border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; } -.list-group-item > .badge { - float: right; -} -.list-group-item > .badge + .badge { - margin-right: 5px; -} a.list-group-item { color: #555555; } @@ -4031,25 +4341,49 @@ a.list-group-item .list-group-item-heading { a.list-group-item:hover, a.list-group-item:focus { text-decoration: none; + color: #555555; background-color: #f5f5f5; } -a.list-group-item.active, -a.list-group-item.active:hover, -a.list-group-item.active:focus { - z-index: 2; - color: #ffffff; - background-color: #428bca; - border-color: #428bca; +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + background-color: #eeeeee; + color: #777777; + cursor: not-allowed; } -a.list-group-item.active .list-group-item-heading, -a.list-group-item.active:hover .list-group-item-heading, -a.list-group-item.active:focus .list-group-item-heading { +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { color: inherit; } -a.list-group-item.active .list-group-item-text, -a.list-group-item.active:hover .list-group-item-text, -a.list-group-item.active:focus .list-group-item-text { - color: #e1edf7; +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #777777; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #ffffff; + background-color: #337ab7; + border-color: #337ab7; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #c7ddef; } .list-group-item-success { color: #3c763d; @@ -4158,34 +4492,85 @@ a.list-group-item-danger.active:focus { .panel-body { padding: 15px; } -.panel > .list-group { - margin-bottom: 0; -} -.panel > .list-group .list-group-item { - border-width: 1px 0; - border-radius: 0; -} -.panel > .list-group .list-group-item:first-child { - border-top: 0; -} -.panel > .list-group .list-group-item:last-child { - border-bottom: 0; -} -.panel > .list-group:first-child .list-group-item:first-child { +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; border-top-right-radius: 3px; border-top-left-radius: 3px; } -.panel > .list-group:last-child .list-group-item:last-child { +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a, +.panel-title > small, +.panel-title > .small, +.panel-title > small > a, +.panel-title > .small > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #dddddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; } .panel-heading + .list-group .list-group-item:first-child { border-top-width: 0; } +.list-group + .panel-footer { + border-top-width: 0; +} .panel > .table, -.panel > .table-responsive > .table { +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { margin-bottom: 0; } +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-left: 15px; + padding-right: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} .panel > .table:first-child > thead:first-child > tr:first-child td:first-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, @@ -4206,6 +4591,18 @@ a.list-group-item-danger.active:focus { .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { border-top-right-radius: 3px; } +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, @@ -4227,7 +4624,9 @@ a.list-group-item-danger.active:focus { border-bottom-right-radius: 3px; } .panel > .panel-body + .table, -.panel > .panel-body + .table-responsive { +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { border-top: 1px solid #dddddd; } .panel > .table > tbody:first-child > tr:first-child th, @@ -4266,70 +4665,36 @@ a.list-group-item-danger.active:focus { .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { border-right: 0; } -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th, -.panel > .table-bordered > tfoot > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tfoot > tr:first-child > th, .panel > .table-bordered > thead > tr:first-child > td, .panel > .table-responsive > .table-bordered > thead > tr:first-child > td, .panel > .table-bordered > tbody > tr:first-child > td, .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > tfoot > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:first-child > td { - border-top: 0; +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; } -.panel > .table-bordered > thead > tr:last-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:last-child > th, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th, -.panel > .table-bordered > thead > tr:last-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:last-child > td, .panel > .table-bordered > tbody > tr:last-child > td, .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, .panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td { +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { border-bottom: 0; } .panel > .table-responsive { border: 0; margin-bottom: 0; } -.panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} -.panel-heading > .dropdown .dropdown-toggle { - color: inherit; -} -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 16px; - color: inherit; -} -.panel-title > a { - color: inherit; -} -.panel-footer { - padding: 10px 15px; - background-color: #f5f5f5; - border-top: 1px solid #dddddd; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} .panel-group { margin-bottom: 20px; } .panel-group .panel { margin-bottom: 0; border-radius: 4px; - overflow: hidden; } .panel-group .panel + .panel { margin-top: 5px; @@ -4337,7 +4702,8 @@ a.list-group-item-danger.active:focus { .panel-group .panel-heading { border-bottom: 0; } -.panel-group .panel-heading + .panel-collapse .panel-body { +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { border-top: 1px solid #dddddd; } .panel-group .panel-footer { @@ -4354,25 +4720,33 @@ a.list-group-item-danger.active:focus { background-color: #f5f5f5; border-color: #dddddd; } -.panel-default > .panel-heading + .panel-collapse .panel-body { +.panel-default > .panel-heading + .panel-collapse > .panel-body { border-top-color: #dddddd; } -.panel-default > .panel-footer + .panel-collapse .panel-body { +.panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333333; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #dddddd; } .panel-primary { - border-color: #428bca; + border-color: #337ab7; } .panel-primary > .panel-heading { color: #ffffff; - background-color: #428bca; - border-color: #428bca; + background-color: #337ab7; + border-color: #337ab7; } -.panel-primary > .panel-heading + .panel-collapse .panel-body { - border-top-color: #428bca; +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7; } -.panel-primary > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #428bca; +.panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #ffffff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7; } .panel-success { border-color: #d6e9c6; @@ -4382,10 +4756,14 @@ a.list-group-item-danger.active:focus { background-color: #dff0d8; border-color: #d6e9c6; } -.panel-success > .panel-heading + .panel-collapse .panel-body { +.panel-success > .panel-heading + .panel-collapse > .panel-body { border-top-color: #d6e9c6; } -.panel-success > .panel-footer + .panel-collapse .panel-body { +.panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #d6e9c6; } .panel-info { @@ -4396,10 +4774,14 @@ a.list-group-item-danger.active:focus { background-color: #d9edf7; border-color: #bce8f1; } -.panel-info > .panel-heading + .panel-collapse .panel-body { +.panel-info > .panel-heading + .panel-collapse > .panel-body { border-top-color: #bce8f1; } -.panel-info > .panel-footer + .panel-collapse .panel-body { +.panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #bce8f1; } .panel-warning { @@ -4410,10 +4792,14 @@ a.list-group-item-danger.active:focus { background-color: #fcf8e3; border-color: #faebcc; } -.panel-warning > .panel-heading + .panel-collapse .panel-body { +.panel-warning > .panel-heading + .panel-collapse > .panel-body { border-top-color: #faebcc; } -.panel-warning > .panel-footer + .panel-collapse .panel-body { +.panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #faebcc; } .panel-danger { @@ -4424,10 +4810,14 @@ a.list-group-item-danger.active:focus { background-color: #f2dede; border-color: #ebccd1; } -.panel-danger > .panel-heading + .panel-collapse .panel-body { +.panel-danger > .panel-heading + .panel-collapse > .panel-body { border-top-color: #ebccd1; } -.panel-danger > .panel-footer + .panel-collapse .panel-body { +.panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { border-bottom-color: #ebccd1; } .well { @@ -4482,8 +4872,7 @@ button.close { } .modal { display: none; - overflow: auto; - overflow-y: scroll; + overflow: hidden; position: fixed; top: 0; right: 0; @@ -4496,6 +4885,7 @@ button.close { .modal.fade .modal-dialog { -webkit-transform: translate(0, -25%); -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); transform: translate(0, -25%); -webkit-transition: -webkit-transform 0.3s ease-out; -moz-transition: -moz-transform 0.3s ease-out; @@ -4505,8 +4895,13 @@ button.close { .modal.in .modal-dialog { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); transform: translate(0, 0); } +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} .modal-dialog { position: relative; width: auto; @@ -4521,7 +4916,7 @@ button.close { -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); background-clip: padding-box; - outline: none; + outline: 0; } .modal-backdrop { position: fixed; @@ -4554,11 +4949,10 @@ button.close { } .modal-body { position: relative; - padding: 20px; + padding: 15px; } .modal-footer { - margin-top: 15px; - padding: 19px 20px 20px; + padding: 15px; text-align: right; border-top: 1px solid #e5e5e5; } @@ -4572,6 +4966,13 @@ button.close { .modal-footer .btn-block + .btn-block { margin-left: 0; } +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} @media (min-width: 768px) { .modal-dialog { width: 600px; @@ -4584,16 +4985,19 @@ button.close { .modal-sm { width: 300px; } +} +@media (min-width: 992px) { .modal-lg { width: 900px; } } .tooltip { position: absolute; - z-index: 1030; + z-index: 1070; display: block; - visibility: visible; + font-family: "lato", sans-serif; font-size: 12px; + font-weight: normal; line-height: 1.4; opacity: 0; filter: alpha(opacity=0); @@ -4643,13 +5047,15 @@ button.close { } .tooltip.top-left .tooltip-arrow { bottom: 0; - left: 5px; + right: 5px; + margin-bottom: -5px; border-width: 5px 5px 0; border-top-color: #000000; } .tooltip.top-right .tooltip-arrow { bottom: 0; - right: 5px; + left: 5px; + margin-bottom: -5px; border-width: 5px 5px 0; border-top-color: #000000; } @@ -4676,13 +5082,15 @@ button.close { } .tooltip.bottom-left .tooltip-arrow { top: 0; - left: 5px; + right: 5px; + margin-top: -5px; border-width: 0 5px 5px; border-bottom-color: #000000; } .tooltip.bottom-right .tooltip-arrow { top: 0; - right: 5px; + left: 5px; + margin-top: -5px; border-width: 0 5px 5px; border-bottom-color: #000000; } @@ -4690,10 +5098,14 @@ button.close { position: absolute; top: 0; left: 0; - z-index: 1010; + z-index: 1060; display: none; max-width: 276px; padding: 1px; + font-family: "lato", sans-serif; + font-size: 14px; + font-weight: normal; + line-height: 1.428571429; text-align: left; background-color: #ffffff; background-clip: padding-box; @@ -4720,8 +5132,6 @@ button.close { margin: 0; padding: 8px 14px; font-size: 14px; - font-weight: normal; - line-height: 18px; background-color: #f7f7f7; border-bottom: 1px solid #ebebeb; border-radius: 5px 5px 0 0; @@ -4729,8 +5139,8 @@ button.close { .popover-content { padding: 9px 14px; } -.popover .arrow, -.popover .arrow:after { +.popover > .arrow, +.popover > .arrow:after { position: absolute; display: block; width: 0; @@ -4738,14 +5148,14 @@ button.close { border-color: transparent; border-style: solid; } -.popover .arrow { +.popover > .arrow { border-width: 11px; } -.popover .arrow:after { +.popover > .arrow:after { border-width: 10px; content: ""; } -.popover.top .arrow { +.popover.top > .arrow { left: 50%; margin-left: -11px; border-bottom-width: 0; @@ -4753,14 +5163,14 @@ button.close { border-top-color: rgba(0, 0, 0, 0.25); bottom: -11px; } -.popover.top .arrow:after { +.popover.top > .arrow:after { content: " "; bottom: 1px; margin-left: -10px; border-bottom-width: 0; border-top-color: #ffffff; } -.popover.right .arrow { +.popover.right > .arrow { top: 50%; left: -11px; margin-top: -11px; @@ -4768,14 +5178,14 @@ button.close { border-right-color: #999999; border-right-color: rgba(0, 0, 0, 0.25); } -.popover.right .arrow:after { +.popover.right > .arrow:after { content: " "; left: 1px; bottom: -10px; border-left-width: 0; border-right-color: #ffffff; } -.popover.bottom .arrow { +.popover.bottom > .arrow { left: 50%; margin-left: -11px; border-top-width: 0; @@ -4783,14 +5193,14 @@ button.close { border-bottom-color: rgba(0, 0, 0, 0.25); top: -11px; } -.popover.bottom .arrow:after { +.popover.bottom > .arrow:after { content: " "; top: 1px; margin-left: -10px; border-top-width: 0; border-bottom-color: #ffffff; } -.popover.left .arrow { +.popover.left > .arrow { top: 50%; right: -11px; margin-top: -11px; @@ -4798,7 +5208,7 @@ button.close { border-left-color: #999999; border-left-color: rgba(0, 0, 0, 0.25); } -.popover.left .arrow:after { +.popover.left > .arrow:after { content: " "; right: 1px; border-right-width: 0; @@ -4817,15 +5227,46 @@ button.close { display: none; position: relative; -webkit-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; transition: 0.6s ease-in-out left; } .carousel-inner > .item > img, .carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; line-height: 1; } +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform 0.6s ease-in-out; + -moz-transition: -moz-transform 0.6s ease-in-out; + -o-transition: -o-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000; + -moz-perspective: 1000; + perspective: 1000; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + left: 0; + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + left: 0; + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + left: 0; + } +} .carousel-inner > .active, .carousel-inner > .next, .carousel-inner > .prev { @@ -4870,7 +5311,8 @@ button.close { text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); } .carousel-control.left { - background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0%), color-stop(rgba(0, 0, 0, 0.0001) 100%)); + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); @@ -4878,14 +5320,15 @@ button.close { .carousel-control.right { left: auto; right: 0; - background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0%), color-stop(rgba(0, 0, 0, 0.5) 100%)); + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); } .carousel-control:hover, .carousel-control:focus { - outline: none; + outline: 0; color: #ffffff; text-decoration: none; opacity: 0.9; @@ -4903,17 +5346,19 @@ button.close { .carousel-control .icon-prev, .carousel-control .glyphicon-chevron-left { left: 50%; + margin-left: -10px; } .carousel-control .icon-next, .carousel-control .glyphicon-chevron-right { right: 50%; + margin-right: -10px; } .carousel-control .icon-prev, .carousel-control .icon-next { width: 20px; height: 20px; margin-top: -10px; - margin-left: -10px; + line-height: 1; font-family: serif; } .carousel-control .icon-prev:before { @@ -4967,16 +5412,23 @@ button.close { text-shadow: none; } @media screen and (min-width: 768px) { - .carousel-control .glyphicons-chevron-left, - .carousel-control .glyphicons-chevron-right, + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, .carousel-control .icon-prev, .carousel-control .icon-next { width: 30px; height: 30px; margin-top: -15px; - margin-left: -15px; font-size: 30px; } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -15px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -15px; + } .carousel-caption { left: 20%; right: 20%; @@ -4988,6 +5440,8 @@ button.close { } .clearfix:before, .clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, .container:before, .container:after, .container-fluid:before, @@ -5018,6 +5472,7 @@ button.close { display: table; } .clearfix:after, +.dl-horizontal dd:after, .container:after, .container-fluid:after, .row:after, @@ -5062,7 +5517,6 @@ button.close { } .hidden { display: none !important; - visibility: hidden !important; } .affix { position: fixed; @@ -5071,9 +5525,23 @@ button.close { width: device-width; } .visible-xs, -tr.visible-xs, -th.visible-xs, -td.visible-xs { +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { display: none !important; } @media (max-width: 767px) { @@ -5091,11 +5559,20 @@ td.visible-xs { display: table-cell !important; } } -.visible-sm, -tr.visible-sm, -th.visible-sm, -td.visible-sm { - display: none !important; +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } } @media (min-width: 768px) and (max-width: 991px) { .visible-sm { @@ -5112,11 +5589,20 @@ td.visible-sm { display: table-cell !important; } } -.visible-md, -tr.visible-md, -th.visible-md, -td.visible-md { - display: none !important; +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } } @media (min-width: 992px) and (max-width: 1199px) { .visible-md { @@ -5133,11 +5619,20 @@ td.visible-md { display: table-cell !important; } } -.visible-lg, -tr.visible-lg, -th.visible-lg, -td.visible-lg { - display: none !important; +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } } @media (min-width: 1200px) { .visible-lg { @@ -5154,42 +5649,42 @@ td.visible-lg { display: table-cell !important; } } +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} @media (max-width: 767px) { - .hidden-xs, - tr.hidden-xs, - th.hidden-xs, - td.hidden-xs { + .hidden-xs { display: none !important; } } @media (min-width: 768px) and (max-width: 991px) { - .hidden-sm, - tr.hidden-sm, - th.hidden-sm, - td.hidden-sm { + .hidden-sm { display: none !important; } } @media (min-width: 992px) and (max-width: 1199px) { - .hidden-md, - tr.hidden-md, - th.hidden-md, - td.hidden-md { + .hidden-md { display: none !important; } } @media (min-width: 1200px) { - .hidden-lg, - tr.hidden-lg, - th.hidden-lg, - td.hidden-lg { + .hidden-lg { display: none !important; } } -.visible-print, -tr.visible-print, -th.visible-print, -td.visible-print { +.visible-print { display: none !important; } @media print { @@ -5207,11 +5702,32 @@ td.visible-print { display: table-cell !important; } } +.visible-print-block { + display: none !important; +} @media print { - .hidden-print, - tr.hidden-print, - th.hidden-print, - td.hidden-print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { display: none !important; } } diff --git a/themes/demo/assets/vendor/bootstrap/js/affix.js b/themes/demo/assets/vendor/bootstrap/js/affix.js index d447b0947..98197642a 100644 --- a/themes/demo/assets/vendor/bootstrap/js/affix.js +++ b/themes/demo/assets/vendor/bootstrap/js/affix.js @@ -1,8 +1,8 @@ /* ======================================================================== - * Bootstrap: affix.js v3.1.0 + * Bootstrap: affix.js v3.3.4 * http://getbootstrap.com/javascript/#affix * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. + * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ @@ -15,28 +15,54 @@ var Affix = function (element, options) { this.options = $.extend({}, Affix.DEFAULTS, options) - this.$window = $(window) + + this.$target = $(this.options.target) .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) this.$element = $(element) - this.affixed = - this.unpin = + this.affixed = null + this.unpin = null this.pinnedOffset = null this.checkPosition() } - Affix.RESET = 'affix affix-top affix-bottom' + Affix.VERSION = '3.3.4' + + Affix.RESET = 'affix affix-top affix-bottom' Affix.DEFAULTS = { - offset: 0 + offset: 0, + target: window + } + + Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + var targetHeight = this.$target.height() + + if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false + + if (this.affixed == 'bottom') { + if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' + return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' + } + + var initializing = this.affixed == null + var colliderTop = initializing ? scrollTop : position.top + var colliderHeight = initializing ? targetHeight : height + + if (offsetTop != null && scrollTop <= offsetTop) return 'top' + if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' + + return false } Affix.prototype.getPinnedOffset = function () { if (this.pinnedOffset) return this.pinnedOffset this.$element.removeClass(Affix.RESET).addClass('affix') - var scrollTop = this.$window.scrollTop() + var scrollTop = this.$target.scrollTop() var position = this.$element.offset() return (this.pinnedOffset = position.top - scrollTop) } @@ -48,43 +74,41 @@ Affix.prototype.checkPosition = function () { if (!this.$element.is(':visible')) return - var scrollHeight = $(document).height() - var scrollTop = this.$window.scrollTop() - var position = this.$element.offset() + var height = this.$element.height() var offset = this.options.offset var offsetTop = offset.top var offsetBottom = offset.bottom - - if (this.affixed == 'top') position.top += scrollTop + var scrollHeight = $(document.body).height() if (typeof offset != 'object') offsetBottom = offsetTop = offset if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) - var affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? false : - offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' : - offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false + var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) - if (this.affixed === affix) return - if (this.unpin) this.$element.css('top', '') + if (this.affixed != affix) { + if (this.unpin != null) this.$element.css('top', '') - var affixType = 'affix' + (affix ? '-' + affix : '') - var e = $.Event(affixType + '.bs.affix') + var affixType = 'affix' + (affix ? '-' + affix : '') + var e = $.Event(affixType + '.bs.affix') - this.$element.trigger(e) + this.$element.trigger(e) - if (e.isDefaultPrevented()) return + if (e.isDefaultPrevented()) return - this.affixed = affix - this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null + this.affixed = affix + this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null - this.$element - .removeClass(Affix.RESET) - .addClass(affixType) - .trigger($.Event(affixType.replace('affix', 'affixed'))) + this.$element + .removeClass(Affix.RESET) + .addClass(affixType) + .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') + } if (affix == 'bottom') { - this.$element.offset({ top: scrollHeight - offsetBottom - this.$element.height() }) + this.$element.offset({ + top: scrollHeight - height - offsetBottom + }) } } @@ -92,9 +116,7 @@ // AFFIX PLUGIN DEFINITION // ======================= - var old = $.fn.affix - - $.fn.affix = function (option) { + function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.affix') @@ -105,6 +127,9 @@ }) } + var old = $.fn.affix + + $.fn.affix = Plugin $.fn.affix.Constructor = Affix @@ -127,10 +152,10 @@ data.offset = data.offset || {} - if (data.offsetBottom) data.offset.bottom = data.offsetBottom - if (data.offsetTop) data.offset.top = data.offsetTop + if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom + if (data.offsetTop != null) data.offset.top = data.offsetTop - $spy.affix(data) + Plugin.call($spy, data) }) }) diff --git a/themes/demo/assets/vendor/bootstrap/js/alert.js b/themes/demo/assets/vendor/bootstrap/js/alert.js index 1c0756a95..1925ef011 100644 --- a/themes/demo/assets/vendor/bootstrap/js/alert.js +++ b/themes/demo/assets/vendor/bootstrap/js/alert.js @@ -1,8 +1,8 @@ /* ======================================================================== - * Bootstrap: alert.js v3.1.0 + * Bootstrap: alert.js v3.3.4 * http://getbootstrap.com/javascript/#alerts * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. + * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ @@ -18,6 +18,10 @@ $(el).on('click', dismiss, this.close) } + Alert.VERSION = '3.3.4' + + Alert.TRANSITION_DURATION = 150 + Alert.prototype.close = function (e) { var $this = $(this) var selector = $this.attr('data-target') @@ -32,7 +36,7 @@ if (e) e.preventDefault() if (!$parent.length) { - $parent = $this.hasClass('alert') ? $this : $this.parent() + $parent = $this.closest('.alert') } $parent.trigger(e = $.Event('close.bs.alert')) @@ -42,13 +46,14 @@ $parent.removeClass('in') function removeElement() { - $parent.trigger('closed.bs.alert').remove() + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() } $.support.transition && $parent.hasClass('fade') ? $parent - .one($.support.transition.end, removeElement) - .emulateTransitionEnd(150) : + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(Alert.TRANSITION_DURATION) : removeElement() } @@ -56,9 +61,7 @@ // ALERT PLUGIN DEFINITION // ======================= - var old = $.fn.alert - - $.fn.alert = function (option) { + function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.alert') @@ -68,6 +71,9 @@ }) } + var old = $.fn.alert + + $.fn.alert = Plugin $.fn.alert.Constructor = Alert diff --git a/themes/demo/assets/vendor/bootstrap/js/button.js b/themes/demo/assets/vendor/bootstrap/js/button.js index 2be72d53d..7c7c021f9 100644 --- a/themes/demo/assets/vendor/bootstrap/js/button.js +++ b/themes/demo/assets/vendor/bootstrap/js/button.js @@ -1,8 +1,8 @@ /* ======================================================================== - * Bootstrap: button.js v3.1.0 + * Bootstrap: button.js v3.3.4 * http://getbootstrap.com/javascript/#buttons * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. + * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ @@ -19,6 +19,8 @@ this.isLoading = false } + Button.VERSION = '3.3.4' + Button.DEFAULTS = { loadingText: 'loading...' } @@ -31,12 +33,12 @@ state = state + 'Text' - if (!data.resetText) $el.data('resetText', $el[val]()) - - $el[val](data[state] || this.options[state]) + if (data.resetText == null) $el.data('resetText', $el[val]()) // push to event loop to allow forms to submit setTimeout($.proxy(function () { + $el[val](data[state] == null ? this.options[state] : data[state]) + if (state == 'loadingText') { this.isLoading = true $el.addClass(d).attr(d, d) @@ -58,6 +60,8 @@ else $parent.find('.active').removeClass('active') } if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') + } else { + this.$element.attr('aria-pressed', !this.$element.hasClass('active')) } if (changed) this.$element.toggleClass('active') @@ -67,9 +71,7 @@ // BUTTON PLUGIN DEFINITION // ======================== - var old = $.fn.button - - $.fn.button = function (option) { + function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.button') @@ -82,6 +84,9 @@ }) } + var old = $.fn.button + + $.fn.button = Plugin $.fn.button.Constructor = Button @@ -97,11 +102,15 @@ // BUTTON DATA-API // =============== - $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) { - var $btn = $(e.target) - if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') - $btn.button('toggle') - e.preventDefault() - }) + $(document) + .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + Plugin.call($btn, 'toggle') + e.preventDefault() + }) + .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { + $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) + }) }(jQuery); diff --git a/themes/demo/assets/vendor/bootstrap/js/carousel.js b/themes/demo/assets/vendor/bootstrap/js/carousel.js index 88c9b23da..a38ef14d0 100644 --- a/themes/demo/assets/vendor/bootstrap/js/carousel.js +++ b/themes/demo/assets/vendor/bootstrap/js/carousel.js @@ -1,8 +1,8 @@ /* ======================================================================== - * Bootstrap: carousel.js v3.1.0 + * Bootstrap: carousel.js v3.3.4 * http://getbootstrap.com/javascript/#carousel * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. + * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ @@ -17,24 +17,42 @@ this.$element = $(element) this.$indicators = this.$element.find('.carousel-indicators') this.options = options - this.paused = - this.sliding = - this.interval = - this.$active = + this.paused = null + this.sliding = null + this.interval = null + this.$active = null this.$items = null - this.options.pause == 'hover' && this.$element - .on('mouseenter', $.proxy(this.pause, this)) - .on('mouseleave', $.proxy(this.cycle, this)) + this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) + + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) } + Carousel.VERSION = '3.3.4' + + Carousel.TRANSITION_DURATION = 600 + Carousel.DEFAULTS = { interval: 5000, pause: 'hover', - wrap: true + wrap: true, + keyboard: true } - Carousel.prototype.cycle = function (e) { + Carousel.prototype.keydown = function (e) { + if (/input|textarea/i.test(e.target.tagName)) return + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + Carousel.prototype.cycle = function (e) { e || (this.paused = false) this.interval && clearInterval(this.interval) @@ -46,23 +64,31 @@ return this } - Carousel.prototype.getActiveIndex = function () { - this.$active = this.$element.find('.item.active') - this.$items = this.$active.parent().children() + Carousel.prototype.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } - return this.$items.index(this.$active) + Carousel.prototype.getItemForDirection = function (direction, active) { + var activeIndex = this.getItemIndex(active) + var willWrap = (direction == 'prev' && activeIndex === 0) + || (direction == 'next' && activeIndex == (this.$items.length - 1)) + if (willWrap && !this.options.wrap) return active + var delta = direction == 'prev' ? -1 : 1 + var itemIndex = (activeIndex + delta) % this.$items.length + return this.$items.eq(itemIndex) } Carousel.prototype.to = function (pos) { var that = this - var activeIndex = this.getActiveIndex() + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) if (pos > (this.$items.length - 1) || pos < 0) return - if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" if (activeIndex == pos) return this.pause().cycle() - return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) } Carousel.prototype.pause = function (e) { @@ -90,22 +116,20 @@ Carousel.prototype.slide = function (type, next) { var $active = this.$element.find('.item.active') - var $next = next || $active[type]() + var $next = next || this.getItemForDirection(type, $active) var isCycling = this.interval var direction = type == 'next' ? 'left' : 'right' - var fallback = type == 'next' ? 'first' : 'last' var that = this - if (!$next.length) { - if (!this.options.wrap) return - $next = this.$element.find('.item')[fallback]() - } + if ($next.hasClass('active')) return (this.sliding = false) - if ($next.hasClass('active')) return this.sliding = false - - var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction }) - this.$element.trigger(e) - if (e.isDefaultPrevented()) return + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return this.sliding = true @@ -113,30 +137,31 @@ if (this.$indicators.length) { this.$indicators.find('.active').removeClass('active') - this.$element.one('slid.bs.carousel', function () { - var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) - $nextIndicator && $nextIndicator.addClass('active') - }) + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') } + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" if ($.support.transition && this.$element.hasClass('slide')) { $next.addClass(type) $next[0].offsetWidth // force reflow $active.addClass(direction) $next.addClass(direction) $active - .one($.support.transition.end, function () { + .one('bsTransitionEnd', function () { $next.removeClass([type, direction].join(' ')).addClass('active') $active.removeClass(['active', direction].join(' ')) that.sliding = false - setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0) + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) }) - .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000) + .emulateTransitionEnd(Carousel.TRANSITION_DURATION) } else { $active.removeClass('active') $next.addClass('active') this.sliding = false - this.$element.trigger('slid.bs.carousel') + this.$element.trigger(slidEvent) } isCycling && this.cycle() @@ -148,9 +173,7 @@ // CAROUSEL PLUGIN DEFINITION // ========================== - var old = $.fn.carousel - - $.fn.carousel = function (option) { + function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.carousel') @@ -164,6 +187,9 @@ }) } + var old = $.fn.carousel + + $.fn.carousel = Plugin $.fn.carousel.Constructor = Carousel @@ -179,26 +205,32 @@ // CAROUSEL DATA-API // ================= - $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { - var $this = $(this), href - var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + var clickHandler = function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return var options = $.extend({}, $target.data(), $this.data()) var slideIndex = $this.attr('data-slide-to') if (slideIndex) options.interval = false - $target.carousel(options) + Plugin.call($target, options) - if (slideIndex = $this.attr('data-slide-to')) { + if (slideIndex) { $target.data('bs.carousel').to(slideIndex) } e.preventDefault() - }) + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) $(window).on('load', function () { $('[data-ride="carousel"]').each(function () { var $carousel = $(this) - $carousel.carousel($carousel.data()) + Plugin.call($carousel, $carousel.data()) }) }) diff --git a/themes/demo/assets/vendor/bootstrap/js/collapse.js b/themes/demo/assets/vendor/bootstrap/js/collapse.js index 1abafd6a5..954513c5e 100644 --- a/themes/demo/assets/vendor/bootstrap/js/collapse.js +++ b/themes/demo/assets/vendor/bootstrap/js/collapse.js @@ -1,8 +1,8 @@ /* ======================================================================== - * Bootstrap: collapse.js v3.1.0 + * Bootstrap: collapse.js v3.3.4 * http://getbootstrap.com/javascript/#collapse * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. + * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ @@ -16,12 +16,23 @@ var Collapse = function (element, options) { this.$element = $(element) this.options = $.extend({}, Collapse.DEFAULTS, options) + this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + + '[data-toggle="collapse"][data-target="#' + element.id + '"]') this.transitioning = null - if (this.options.parent) this.$parent = $(this.options.parent) + if (this.options.parent) { + this.$parent = this.getParent() + } else { + this.addAriaAndCollapsedClass(this.$element, this.$trigger) + } + if (this.options.toggle) this.toggle() } + Collapse.VERSION = '3.3.4' + + Collapse.TRANSITION_DURATION = 350 + Collapse.DEFAULTS = { toggle: true } @@ -34,35 +45,43 @@ Collapse.prototype.show = function () { if (this.transitioning || this.$element.hasClass('in')) return + var activesData + var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') + + if (actives && actives.length) { + activesData = actives.data('bs.collapse') + if (activesData && activesData.transitioning) return + } + var startEvent = $.Event('show.bs.collapse') this.$element.trigger(startEvent) if (startEvent.isDefaultPrevented()) return - var actives = this.$parent && this.$parent.find('> .panel > .in') - if (actives && actives.length) { - var hasData = actives.data('bs.collapse') - if (hasData && hasData.transitioning) return - actives.collapse('hide') - hasData || actives.data('bs.collapse', null) + Plugin.call(actives, 'hide') + activesData || actives.data('bs.collapse', null) } var dimension = this.dimension() this.$element .removeClass('collapse') - .addClass('collapsing') - [dimension](0) + .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) + + this.$trigger + .removeClass('collapsed') + .attr('aria-expanded', true) this.transitioning = 1 var complete = function () { this.$element .removeClass('collapsing') - .addClass('collapse in') - [dimension]('auto') + .addClass('collapse in')[dimension]('') this.transitioning = 0 - this.$element.trigger('shown.bs.collapse') + this.$element + .trigger('shown.bs.collapse') } if (!$.support.transition) return complete.call(this) @@ -70,9 +89,8 @@ var scrollSize = $.camelCase(['scroll', dimension].join('-')) this.$element - .one($.support.transition.end, $.proxy(complete, this)) - .emulateTransitionEnd(350) - [dimension](this.$element[0][scrollSize]) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) } Collapse.prototype.hide = function () { @@ -84,55 +102,85 @@ var dimension = this.dimension() - this.$element - [dimension](this.$element[dimension]()) - [0].offsetHeight + this.$element[dimension](this.$element[dimension]())[0].offsetHeight this.$element .addClass('collapsing') - .removeClass('collapse') - .removeClass('in') + .removeClass('collapse in') + .attr('aria-expanded', false) + + this.$trigger + .addClass('collapsed') + .attr('aria-expanded', false) this.transitioning = 1 var complete = function () { this.transitioning = 0 this.$element - .trigger('hidden.bs.collapse') .removeClass('collapsing') .addClass('collapse') + .trigger('hidden.bs.collapse') } if (!$.support.transition) return complete.call(this) this.$element [dimension](0) - .one($.support.transition.end, $.proxy(complete, this)) - .emulateTransitionEnd(350) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) } Collapse.prototype.toggle = function () { this[this.$element.hasClass('in') ? 'hide' : 'show']() } + Collapse.prototype.getParent = function () { + return $(this.options.parent) + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') + .each($.proxy(function (i, element) { + var $element = $(element) + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) + }, this)) + .end() + } + + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { + var isOpen = $element.hasClass('in') + + $element.attr('aria-expanded', isOpen) + $trigger + .toggleClass('collapsed', !isOpen) + .attr('aria-expanded', isOpen) + } + + function getTargetFromTrigger($trigger) { + var href + var target = $trigger.attr('data-target') + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + + return $(target) + } + // COLLAPSE PLUGIN DEFINITION // ========================== - var old = $.fn.collapse - - $.fn.collapse = function (option) { + function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.collapse') var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) - if (!data && options.toggle && option == 'show') option = !option + if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) if (typeof option == 'string') data[option]() }) } + var old = $.fn.collapse + + $.fn.collapse = Plugin $.fn.collapse.Constructor = Collapse @@ -148,23 +196,16 @@ // COLLAPSE DATA-API // ================= - $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) { - var $this = $(this), href - var target = $this.attr('data-target') - || e.preventDefault() - || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 - var $target = $(target) + $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { + var $this = $(this) + + if (!$this.attr('data-target')) e.preventDefault() + + var $target = getTargetFromTrigger($this) var data = $target.data('bs.collapse') var option = data ? 'toggle' : $this.data() - var parent = $this.attr('data-parent') - var $parent = parent && $(parent) - if (!data || !data.transitioning) { - if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') - $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') - } - - $target.collapse(option) + Plugin.call($target, option) }) }(jQuery); diff --git a/themes/demo/assets/vendor/bootstrap/js/dropdown.js b/themes/demo/assets/vendor/bootstrap/js/dropdown.js index 9c13aac97..9874600f9 100644 --- a/themes/demo/assets/vendor/bootstrap/js/dropdown.js +++ b/themes/demo/assets/vendor/bootstrap/js/dropdown.js @@ -1,8 +1,8 @@ /* ======================================================================== - * Bootstrap: dropdown.js v3.1.0 + * Bootstrap: dropdown.js v3.3.4 * http://getbootstrap.com/javascript/#dropdowns * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. + * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ @@ -14,11 +14,13 @@ // ========================= var backdrop = '.dropdown-backdrop' - var toggle = '[data-toggle=dropdown]' + var toggle = '[data-toggle="dropdown"]' var Dropdown = function (element) { $(element).on('click.bs.dropdown', this.toggle) } + Dropdown.VERSION = '3.3.4' + Dropdown.prototype.toggle = function (e) { var $this = $(this) @@ -40,18 +42,20 @@ if (e.isDefaultPrevented()) return + $this + .trigger('focus') + .attr('aria-expanded', 'true') + $parent .toggleClass('open') .trigger('shown.bs.dropdown', relatedTarget) - - $this.focus() } return false } Dropdown.prototype.keydown = function (e) { - if (!/(38|40|27)/.test(e.keyCode)) return + if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return var $this = $(this) @@ -63,33 +67,40 @@ var $parent = getParent($this) var isActive = $parent.hasClass('open') - if (!isActive || (isActive && e.keyCode == 27)) { - if (e.which == 27) $parent.find(toggle).focus() - return $this.click() + if ((!isActive && e.which != 27) || (isActive && e.which == 27)) { + if (e.which == 27) $parent.find(toggle).trigger('focus') + return $this.trigger('click') } - var desc = ' li:not(.divider):visible a' - var $items = $parent.find('[role=menu]' + desc + ', [role=listbox]' + desc) + var desc = ' li:not(.disabled):visible a' + var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc) if (!$items.length) return - var index = $items.index($items.filter(':focus')) + var index = $items.index(e.target) - if (e.keyCode == 38 && index > 0) index-- // up - if (e.keyCode == 40 && index < $items.length - 1) index++ // down + if (e.which == 38 && index > 0) index-- // up + if (e.which == 40 && index < $items.length - 1) index++ // down if (!~index) index = 0 - $items.eq(index).focus() + $items.eq(index).trigger('focus') } function clearMenus(e) { + if (e && e.which === 3) return $(backdrop).remove() $(toggle).each(function () { - var $parent = getParent($(this)) + var $this = $(this) + var $parent = getParent($this) var relatedTarget = { relatedTarget: this } + if (!$parent.hasClass('open')) return + $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) + if (e.isDefaultPrevented()) return + + $this.attr('aria-expanded', 'false') $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget) }) } @@ -99,7 +110,7 @@ if (!selector) { selector = $this.attr('href') - selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 } var $parent = selector && $(selector) @@ -111,9 +122,7 @@ // DROPDOWN PLUGIN DEFINITION // ========================== - var old = $.fn.dropdown - - $.fn.dropdown = function (option) { + function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.dropdown') @@ -123,6 +132,9 @@ }) } + var old = $.fn.dropdown + + $.fn.dropdown = Plugin $.fn.dropdown.Constructor = Dropdown @@ -142,6 +154,8 @@ .on('click.bs.dropdown.data-api', clearMenus) .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) - .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu], [role=listbox]', Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown) }(jQuery); diff --git a/themes/demo/assets/vendor/bootstrap/js/modal.js b/themes/demo/assets/vendor/bootstrap/js/modal.js index 24506ea28..c1eb2a852 100644 --- a/themes/demo/assets/vendor/bootstrap/js/modal.js +++ b/themes/demo/assets/vendor/bootstrap/js/modal.js @@ -1,8 +1,8 @@ /* ======================================================================== - * Bootstrap: modal.js v3.1.0 + * Bootstrap: modal.js v3.3.4 * http://getbootstrap.com/javascript/#modals * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. + * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ @@ -14,10 +14,15 @@ // ====================== var Modal = function (element, options) { - this.options = options - this.$element = $(element) - this.$backdrop = - this.isShown = null + this.options = options + this.$body = $(document.body) + this.$element = $(element) + this.$dialog = this.$element.find('.modal-dialog') + this.$backdrop = null + this.isShown = null + this.originalBodyPad = null + this.scrollbarWidth = 0 + this.ignoreBackdropClick = false if (this.options.remote) { this.$element @@ -28,6 +33,11 @@ } } + Modal.VERSION = '3.3.4' + + Modal.TRANSITION_DURATION = 300 + Modal.BACKDROP_TRANSITION_DURATION = 150 + Modal.DEFAULTS = { backdrop: true, keyboard: true, @@ -35,7 +45,7 @@ } Modal.prototype.toggle = function (_relatedTarget) { - return this[!this.isShown ? 'show' : 'hide'](_relatedTarget) + return this.isShown ? this.hide() : this.show(_relatedTarget) } Modal.prototype.show = function (_relatedTarget) { @@ -48,21 +58,34 @@ this.isShown = true + this.checkScrollbar() + this.setScrollbar() + this.$body.addClass('modal-open') + this.escape() + this.resize() this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) + this.$dialog.on('mousedown.dismiss.bs.modal', function () { + that.$element.one('mouseup.dismiss.bs.modal', function (e) { + if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true + }) + }) + this.backdrop(function () { var transition = $.support.transition && that.$element.hasClass('fade') if (!that.$element.parent().length) { - that.$element.appendTo(document.body) // don't move modals dom position + that.$element.appendTo(that.$body) // don't move modals dom position } that.$element .show() .scrollTop(0) + that.adjustDialog() + if (transition) { that.$element[0].offsetWidth // force reflow } @@ -76,12 +99,12 @@ var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) transition ? - that.$element.find('.modal-dialog') // wait for modal to slide in - .one($.support.transition.end, function () { - that.$element.focus().trigger(e) + that.$dialog // wait for modal to slide in + .one('bsTransitionEnd', function () { + that.$element.trigger('focus').trigger(e) }) - .emulateTransitionEnd(300) : - that.$element.focus().trigger(e) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + that.$element.trigger('focus').trigger(e) }) } @@ -97,6 +120,7 @@ this.isShown = false this.escape() + this.resize() $(document).off('focusin.bs.modal') @@ -104,11 +128,14 @@ .removeClass('in') .attr('aria-hidden', true) .off('click.dismiss.bs.modal') + .off('mouseup.dismiss.bs.modal') + + this.$dialog.off('mousedown.dismiss.bs.modal') $.support.transition && this.$element.hasClass('fade') ? this.$element - .one($.support.transition.end, $.proxy(this.hideModal, this)) - .emulateTransitionEnd(300) : + .one('bsTransitionEnd', $.proxy(this.hideModal, this)) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : this.hideModal() } @@ -117,18 +144,26 @@ .off('focusin.bs.modal') // guard against infinite focus loop .on('focusin.bs.modal', $.proxy(function (e) { if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { - this.$element.focus() + this.$element.trigger('focus') } }, this)) } Modal.prototype.escape = function () { if (this.isShown && this.options.keyboard) { - this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) { + this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { e.which == 27 && this.hide() }, this)) } else if (!this.isShown) { - this.$element.off('keyup.dismiss.bs.modal') + this.$element.off('keydown.dismiss.bs.modal') + } + } + + Modal.prototype.resize = function () { + if (this.isShown) { + $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) + } else { + $(window).off('resize.bs.modal') } } @@ -136,7 +171,9 @@ var that = this this.$element.hide() this.backdrop(function () { - that.removeBackdrop() + that.$body.removeClass('modal-open') + that.resetAdjustments() + that.resetScrollbar() that.$element.trigger('hidden.bs.modal') }) } @@ -147,19 +184,24 @@ } Modal.prototype.backdrop = function (callback) { + var that = this var animate = this.$element.hasClass('fade') ? 'fade' : '' if (this.isShown && this.options.backdrop) { var doAnimate = $.support.transition && animate this.$backdrop = $('