Merge branch 'develop' into staging

Fixed a conflict in README.md
This commit is contained in:
gregoirenovel 2017-04-12 13:50:08 +02:00
commit 19cde557ce
165 changed files with 1578 additions and 1056 deletions

119
.haml-lint.yml Normal file
View file

@ -0,0 +1,119 @@
linters:
AlignmentTabs:
enabled: true
AltText:
enabled: false
ClassAttributeWithStaticValue:
enabled: true
ClassesBeforeIds:
enabled: false
ConsecutiveComments:
enabled: false
ConsecutiveSilentScripts:
enabled: false
max_consecutive: 2
EmptyObjectReference:
enabled: true
EmptyScript:
enabled: true
FinalNewline:
enabled: true
present: true
HtmlAttributes:
enabled: true
IdNames:
enabled: false
style: lisp_case
ImplicitDiv:
enabled: false
Indentation:
enabled: true
character: space # or tab
width: 2 # ignored if character == tab
InstanceVariables:
enabled: false
file_types: partials
matchers:
all: .*
partials: \A_.*\.haml\z
LeadingCommentSpace:
enabled: true
LineLength:
enabled: false
max: 80
MultilinePipe:
enabled: true
MultilineScript:
enabled: true
ObjectReferenceAttributes:
enabled: true
RepeatedId:
enabled: false
severity: error
RuboCop:
enabled: false
# These cops are incredibly noisy when it comes to HAML templates, so we
# ignore them.
ignored_cops:
- Lint/BlockAlignment
- Lint/EndAlignment
- Lint/Void
- Metrics/BlockLength
- Metrics/LineLength
- Style/AlignParameters
- Style/BlockNesting
- Style/ElseAlignment
- Style/EndOfLine
- Style/FileName
- Style/FinalNewline
- Style/FrozenStringLiteralComment
- Style/IfUnlessModifier
- Style/IndentationWidth
- Style/Next
- Style/TrailingBlankLines
- Style/TrailingWhitespace
- Style/WhileUntilModifier
RubyComments:
enabled: true
SpaceBeforeScript:
enabled: true
SpaceInsideHashAttributes:
enabled: true
style: space
TagName:
enabled: true
TrailingWhitespace:
enabled: true
UnnecessaryInterpolation:
enabled: true
# Disabled because too agressive, but to enable
# locally from time to time
UnnecessaryStringOutput:
enabled: false

View file

@ -93,6 +93,8 @@ gem 'simple_form'
gem 'newrelic_rpm'
gem 'scenic'
# Sidekiq
gem 'sidekiq'
gem 'sidekiq-cron', '~> 0.4.4'
@ -114,7 +116,6 @@ group :test do
gem 'guard-livereload', '~> 2.4', require: false
gem 'vcr'
gem 'rails-controller-testing'
gem 'sqlite3'
end
group :development do
@ -122,6 +123,7 @@ group :development do
gem 'web-console'
gem 'rack-handlers'
gem 'xray-rails'
gem 'haml-lint'
end
group :development, :test do
@ -145,6 +147,3 @@ group :production, :staging do
gem 'sentry-raven'
end
group :production, :staging, :development do
gem 'scenic'
end

View file

@ -69,7 +69,7 @@ GEM
i18n (~> 0.7)
minitest (~> 5.1)
tzinfo (~> 1.1)
addressable (2.5.0)
addressable (2.5.1)
public_suffix (~> 2.0, >= 2.0.2)
apipie-rails (0.3.7)
json
@ -78,6 +78,7 @@ GEM
actionpack (>= 3.0)
activemodel (>= 3.0)
responders
ast (2.3.0)
attr_required (1.0.1)
autoprefixer-rails (6.5.4)
execjs
@ -97,7 +98,7 @@ GEM
browser (2.3.0)
builder (3.2.3)
byebug (9.0.6)
capybara (2.11.0)
capybara (2.13.0)
addressable
mime-types (>= 1.16)
nokogiri (>= 1.3.3)
@ -313,12 +314,20 @@ GEM
rspec (>= 2.99.0, < 4.0)
haml (4.0.7)
tilt
haml-lint (0.999.999)
haml_lint
haml-rails (0.9.0)
actionpack (>= 4.0.1)
activesupport (>= 4.0.1)
haml (>= 4.0.6, < 5.0)
html2haml (>= 1.0.1)
railties (>= 4.0.1)
haml_lint (0.24.0)
haml (>= 4.0, < 5.1)
rainbow
rake (>= 10, < 13)
rubocop (>= 0.47.0)
sysexits (~> 1.1)
hashdiff (0.3.1)
hashie (3.4.6)
html2haml (2.0.0)
@ -412,11 +421,14 @@ GEM
openstack (3.3.7)
json
orm_adapter (0.5.0)
parser (2.4.0.0)
ast (~> 2.2)
pg (0.19.0)
poltergeist (1.12.0)
poltergeist (1.14.0)
capybara (~> 2.1)
cliver (~> 0.3.1)
websocket-driver (>= 0.2.0)
powerpack (0.1.1)
pry (0.10.4)
coderay (~> 1.1.0)
method_source (~> 0.8.1)
@ -424,7 +436,7 @@ GEM
pry-byebug (3.4.2)
byebug (~> 9.0)
pry (~> 0.10)
public_suffix (2.0.4)
public_suffix (2.0.5)
rack (2.0.1)
rack-handlers (0.7.3)
rack
@ -463,6 +475,7 @@ GEM
method_source
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rainbow (2.2.1)
raindrops (0.17.0)
rake (12.0.0)
rb-fsevent (0.9.8)
@ -513,6 +526,13 @@ GEM
rspec-mocks (~> 3.5.0)
rspec-support (~> 3.5.0)
rspec-support (3.5.0)
rubocop (0.48.1)
parser (>= 2.3.3.1, < 3.0)
powerpack (~> 0.1)
rainbow (>= 1.99.1, < 3.0)
ruby-progressbar (~> 1.7)
unicode-display_width (~> 1.0, >= 1.0.1)
ruby-progressbar (1.8.1)
ruby_dep (1.5.0)
ruby_parser (3.8.3)
sexp_processor (~> 4.1)
@ -574,13 +594,13 @@ GEM
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.0)
sqlite3 (1.3.13)
swd (1.0.1)
activesupport (>= 3)
attr_required (>= 0.0.5)
httpclient (>= 2.4)
i18n
json (>= 1.4.3)
sysexits (1.2.0)
therubyracer (0.12.2)
libv8 (~> 3.16.14.0)
ref
@ -599,6 +619,7 @@ GEM
unf (0.1.4)
unf_ext
unf_ext (0.0.7.2)
unicode-display_width (1.1.3)
unicode_utils (1.4.0)
unicorn (5.2.0)
kgio (~> 2.6)
@ -626,7 +647,7 @@ GEM
addressable (>= 2.3.6)
crack (>= 0.3.2)
hashdiff
websocket-driver (0.6.4)
websocket-driver (0.6.5)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.2)
will_paginate (3.1.5)
@ -667,6 +688,7 @@ DEPENDENCIES
guard
guard-livereload (~> 2.4)
guard-rspec
haml-lint
haml-rails
hashie
jquery-rails
@ -705,7 +727,6 @@ DEPENDENCIES
spreadsheet_architect
spring
spring-commands-rspec
sqlite3
therubyracer
timecop
turbolinks (~> 5.0)

View file

@ -73,6 +73,7 @@ guard :rspec, cmd: 'spring rspec' do
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
watch(%r{^app/(.*)(\.erb|\.haml|\.slim)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
watch(%r{^app/services/(.+)_(service)\.rb$}) { |m| "spec/services/#{m[1]}_service_spec.rb" }
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
watch('config/routes.rb') { "spec/routing" }
watch('app/controllers/application_controller.rb') { "spec/controllers" }

View file

@ -2,13 +2,18 @@
## Context
TéléProcédure Simplifiée, ou TPS pour les intimes, est une plateforme 100% web et 0% email, conçue afin de répondre au besoin urgent de l'État d'appliquer la directive sur le 100% démat' à l'horizon 2018 pour les démarches administratives.
TéléProcédure Simplifiée, ou TPS pour les intimes, est une plateforme 100 % web et 0 % email, conçue afin de répondre au besoin urgent de l'État d'appliquer la directive sur le 100 % démat' à l'horizon 2018 pour les démarches administratives.
## Technologies utilisées
## Dépendances
Ruby : 2.3.1
Rails : 5.0.0.1
### Tous environnements
- postgresql
### Tests
- PhantomJS
## Initialisation de l'environnement de développement
@ -20,32 +25,23 @@ Afin d'initialiser l'environnement de développement, éxécutez la commande sui
## Création de la base de données
L'application utilise une base de donnée Postgresql. Pour en installer une, utilisez la commande suivante :
sudo apt-get install postgresql
Les informations nécessaire à l'initialisation de la base doivent être pré-configurées à la main grâce à la procédure suivante :
su - postgres
psql
> create user tps with password 'lol' superuser;
> create user tps_development with password 'tps_development' superuser;
> create user tps_test with password 'tps_test' superuser;
> \q
Afin de générer la BDD de l'application, il est nécessaire d'éxécuter les commandes suivantes :
rake db:create db:schema:load db:migrate
rake db:create db:schema:load db:migrate RAILS_ENV=test
## Installation de Phantom JS
## Exécution des tests (RSpec)
Installer PhantomJS qui est utilisé par les tests automatisés de l'application.
## Exécution des tests (Rspec)
Pour éxécuter les tests de l'application, plusieurs possibilités :
Pour exécuter les tests de l'application, plusieurs possibilités :
- Lancer tous les tests
@ -62,8 +58,11 @@ Pour éxécuter les tests de l'application, plusieurs possibilités :
rake spec SPEC=file_path/file_name_spec.rb
rspec file_path/file_name_spec.rb
## Linting
## Regénérer les binstubs
- Linter les fichiers HAML : `bundle exec haml-lint app/views/`
## Régénérer les binstubs
bundle binstub railties --force
rake rails:update:bin

Binary file not shown.

View file

@ -0,0 +1,36 @@
(function() {
var showNotFound = function() {
$('.dossier-link .text-info').hide();
$('.dossier-link .text-warning').show();
};
var showData = function(data) {
$('.dossier-link .procedureLibelle').text(data.procedureLibelle);
$('.dossier-link .text-info').show();
$('.dossier-link .text-warning').hide();
};
var hideEverything = function() {
$('.dossier-link .text-info').hide();
$('.dossier-link .text-warning').hide();
};
var fetchProcedureLibelle = function(e) {
var dossierId = $(e.target).val();
if(dossierId) {
$.get('/users/dossiers/' + dossierId + '/procedure_libelle')
.done(showData)
.fail(showNotFound);
} else {
hideEverything();
}
};
var timeOut = null;
var debounceFetchProcedureLibelle = function(e) {
if(timeOut){ clearTimeout(timeOut); }
timeOut = setTimeout(function() { fetchProcedureLibelle(e); }, 300);
};
$(document).on('input', '[data-type=dossier-link]', debounceFetchProcedureLibelle);
})();

View file

@ -0,0 +1,20 @@
var TPS = TPS || {};
TPS.toggleChart = function(event, chartClass) {
var nextSelectorItem = $(event.target),
nextChart = $(chartClass),
nextChartId = nextChart.children().first().attr("id"),
currentSelectorItem = nextSelectorItem.parent().find(".segmented-control-item-active"),
currentChart = nextSelectorItem.parent().parent().find(".chart:not(.hidden)");
// Change the current selector and the next selector states
currentSelectorItem.toggleClass("segmented-control-item-active");
nextSelectorItem.toggleClass("segmented-control-item-active");
// Hide the currently shown chart and show the new one
currentChart.toggleClass("hidden");
nextChart.toggleClass("hidden");
// Reflow needed, see https://github.com/highcharts/highcharts/issues/1979
Chartkick.charts[nextChartId].getChartObject().reflow();
}

View file

@ -1,9 +0,0 @@
@import "card";
.stats {
.stat-card {
@extend .card;
margin: 15px auto;
max-width: 1200px;
}
}

View file

@ -0,0 +1,124 @@
@import "card";
$dark-grey: #333333;
$light-grey: #999999;
$blue: rgba(61, 149, 236, 1);
$blue-hover: rgba(61, 149, 236, 0.8);
$default-space: 15px;
$new-h1-margin-bottom: 4 * $default-space;
.new-h1 {
color: $dark-grey;
text-align: center;
margin-top: 0;
margin-bottom: $new-h1-margin-bottom;
}
$statistiques-padding-top: $default-space * 2;
.statistiques {
width: 1040px;
margin: 0 auto;
padding-top: $statistiques-padding-top;
}
.stat-cards {
.stat-card:nth-of-type(even) {
margin-right: 0px;
}
}
$stat-card-margin-bottom: 3 * $default-space;
.stat-card {
@extend .card;
margin-bottom: $stat-card-margin-bottom;
border-radius: 5px;
box-shadow: none;
border: 1px solid rgba(0, 0, 0, 0.15);
}
$stat-card-half-horizontal-spacing: 4 * $default-space;
.stat-card-half {
width: calc((100% - #{$stat-card-half-horizontal-spacing}) / 2);
margin-right: 3 * $default-space;
}
.stat-card-title {
color: $dark-grey;
font-size: 26px;
font-weight: 500;
width: 200px;
}
$segmented-control-margin-top: $default-space;
.segmented-control {
border-radius: 36px;
height: 36px;
line-height: 36px;
font-size: 0;
padding: 0;
display: inline-block;
margin-top: $segmented-control-margin-top;
}
$segmented-control-item-horizontal-padding: $default-space;
$segmented-control-item-border-radius: 2 * $default-space;
.segmented-control-item {
color: $blue;
display: inline-block;
font-size: 15px;
border: 2px solid $blue;
margin-right: -2px;
padding-left: $segmented-control-item-horizontal-padding;
padding-right: $segmented-control-item-horizontal-padding;
color: $blue;
&:first-of-type {
border-radius: $segmented-control-item-border-radius 0px 0px $segmented-control-item-border-radius;
}
&:last-of-type {
border-radius: 0px $segmented-control-item-border-radius $segmented-control-item-border-radius 0px;
margin-right: 0;
}
&:hover {
background-color: $blue-hover;
color: white;
cursor: pointer;
}
}
.segmented-control-item-active {
background-color: $blue;
color: white;
}
.chart-container {
margin-top: 36px;
}
.chart {
width: 100%;
}
$big-number-card-padding: 2 * $segmented-control-item-border-radius;
.big-number-card {
padding: $big-number-card-padding;
}
.big-number-card-title {
display: block;
text-align: center;
margin: 0 auto;
color: $light-grey;
}
.big-number-card-number {
display: block;
text-align: center;
font-size: 90px;
line-height: 90px;
font-weight: bold;
color: $blue;
}

View file

@ -1,24 +0,0 @@
module Administrations
class StatsController < ApplicationController
before_action :authenticate_administration!
def index
procedures = Procedure.where(created_at: Time.current.all_quarter).group("date_trunc('day', created_at)").count
dossiers = Dossier.where(created_at: Time.current.all_quarter).group("date_trunc('day', created_at)").count
@procedures = clean_hash(procedures)
@dossiers = clean_hash(dossiers)
end
private
def clean_hash h
h.keys.each{ |key| h[key.to_date] = h[key]; h.delete(key) }
min_date = h.keys.min
max_date = h.keys.max
(min_date..max_date).each do |date|
h[date] = 0 if h[date].nil?
end
h
end
end
end

View file

@ -5,7 +5,7 @@ class Backoffice::PrivateFormulairesController < ApplicationController
dossier = current_gestionnaire.dossiers.find(params[:dossier_id])
unless params[:champs].nil?
champs_service_errors = ChampsService.save_formulaire dossier.champs_private, params
champs_service_errors = ChampsService.save_champs dossier.champs_private, params
if champs_service_errors.empty?
flash[:notice] = "Formulaire enregistré"

View file

@ -0,0 +1,56 @@
class StatsController < ApplicationController
def index
procedures = Procedure.where(:published => true)
dossiers = Dossier.where.not(:state => :draft)
@procedures_30_days_flow = thirty_days_flow_hash(procedures)
@dossiers_30_days_flow = thirty_days_flow_hash(dossiers)
@procedures_cumulative = cumulative_hash(procedures)
@dossiers_cumulative = cumulative_hash(dossiers)
@procedures_count = procedures.count
@dossiers_count = dossiers.count
end
private
def thirty_days_flow_hash(association)
min_date = 30.days.ago.to_date
max_date = Time.now.to_date
thirty_days_flow_hash = association
.where(:created_at => min_date..max_date)
.group("date_trunc('day', created_at)")
.count
clean_hash(thirty_days_flow_hash, min_date, max_date)
end
def clean_hash(h, min_date, max_date)
# Convert keys to date
h = Hash[h.map { |(k, v)| [k.to_date, v] }]
# Add missing vales where count is 0
(min_date..max_date).each do |date|
if h[date].nil?
h[date] = 0
end
end
h
end
def cumulative_hash(association)
sum = 0
association
.group("DATE_TRUNC('month', created_at)")
.count
.to_a
.sort{ |x, y| x[0] <=> y[0] }
.map { |x, y| { x => (sum += y)} }
.reduce({}, :merge)
end
end

View file

@ -12,10 +12,7 @@ class Users::DescriptionController < UsersController
@procedure = @dossier.procedure
@champs = @dossier.ordered_champs
@headers = @champs.inject([]) do |acc, champ|
acc.push(champ) if champ.type_champ == 'header_section'
acc
end
@headers = @champs.select { |c| c.type_champ == 'header_section' }
unless @dossier.can_be_initiated?
flash[:alert] = t('errors.messages.procedure_archived')
@ -34,18 +31,12 @@ class Users::DescriptionController < UsersController
@champs = @dossier.ordered_champs
mandatory = true
mandatory = !(params[:submit].keys.first == 'brouillon') unless params[:submit].nil?
check_mandatory_fields = !draft_submission?
unless @dossier.update_attributes(create_params)
@dossier = @dossier.decorate
flash.alert = @dossier.errors.full_messages.join('<br />').html_safe
return redirect_to users_dossier_description_path(dossier_id: @dossier.id)
end
unless params[:champs].nil?
champs_service_errors = ChampsService.save_formulaire @dossier.champs, params, mandatory
if params[:champs]
champs_service_errors = ChampsService.save_champs @dossier.champs,
params,
check_mandatory_fields
unless champs_service_errors.empty?
flash.alert = (champs_service_errors.inject('') { |acc, error| acc+= error[:message]+'<br>' }).html_safe
@ -53,33 +44,30 @@ class Users::DescriptionController < UsersController
end
end
if @procedure.cerfa_flag?
unless params[:cerfa_pdf].nil?
cerfa = Cerfa.new(content: params[:cerfa_pdf], dossier: @dossier, user: current_user)
unless cerfa.save
flash.alert = cerfa.errors.full_messages.join('<br />').html_safe
return redirect_to users_dossier_description_path(dossier_id: @dossier.id)
end
if @procedure.cerfa_flag? && params[:cerfa_pdf]
cerfa = Cerfa.new(content: params[:cerfa_pdf], dossier: @dossier, user: current_user)
unless cerfa.save
flash.alert = cerfa.errors.full_messages.join('<br />').html_safe
return redirect_to users_dossier_description_path(dossier_id: @dossier.id)
end
end
unless (errors_upload = PiecesJustificativesService.upload!(@dossier, current_user, params)).empty?
errors_upload = PiecesJustificativesService.upload!(@dossier, current_user, params)
unless errors_upload.empty?
flash.alert = errors_upload.html_safe
return redirect_to users_dossier_description_path(dossier_id: @dossier.id)
end
if mandatory
if draft_submission?
flash.notice = 'Votre brouillon a bien été sauvegardé.'
redirect_to url_for(controller: :dossiers, action: :index, liste: :brouillon)
else
if @dossier.draft?
@dossier.initiated!
NotificationMailer.send_notification(@dossier, @dossier.procedure.initiated_mail).deliver_now!
end
flash.notice = 'Félicitations, votre demande a bien été enregistrée.'
redirect_to url_for(controller: :recapitulatif, action: :show, dossier_id: @dossier.id)
else
flash.notice = 'Votre brouillon a bien été sauvegardé.'
redirect_to url_for(controller: :dossiers, action: :index, liste: :brouillon)
end
end
@ -123,6 +111,10 @@ class Users::DescriptionController < UsersController
private
def draft_submission?
params[:submit] && params[:submit].keys.first == 'brouillon'
end
def check_autorisation_donnees
@dossier = current_user_dossier
@ -137,9 +129,4 @@ class Users::DescriptionController < UsersController
redirect_to url_for(users_dossier_path(@dossier.id))
end
end
def create_params
params.permit()
end
end

View file

@ -154,6 +154,13 @@ class Users::DossiersController < UsersController
redirect_to url_for users_dossiers_path
end
def procedure_libelle
dossier = Dossier.find(params[:dossier_id])
render json: { procedureLibelle: dossier.procedure.libelle }
rescue ActiveRecord::RecordNotFound
render json: {}, status: 404
end
private
def check_siret

View file

@ -28,6 +28,10 @@ class Champ < ActiveRecord::Base
same_date? num, '%M'
end
def mandatory_and_blank?
mandatory? && value.blank?
end
def same_date? num, compare
if type_champ == 'datetime' && !value.nil?
if value.to_datetime.strftime(compare) == num

View file

@ -210,19 +210,16 @@ class Dossier < ActiveRecord::Base
def convert_specific_hash_values_to_string(hash_to_convert)
hash = {}
hash_to_convert.each do |key, value|
value = value.to_s if !value.kind_of?(Time) && !value.nil?
value = serialize_value_for_export(value)
hash.store(key, value)
end
return hash
end
def convert_specific_array_values_to_string(array_to_convert)
array = []
array_to_convert.each do |value|
value = value.to_s if !value.kind_of?(Time) && !value.nil?
array << value
def full_data_strings_array
data_with_champs.map do |value|
serialize_value_for_export(value)
end
return array
end
def export_entreprise_data
@ -306,4 +303,8 @@ class Dossier < ActiveRecord::Base
end
end
def serialize_value_for_export(value)
value.nil? || value.kind_of?(Time) ? value : value.to_s
end
end

View file

@ -1,6 +1,5 @@
class Notification < ActiveRecord::Base
belongs_to :dossier
serialize :liste if Rails.env.test?
# after_save :broadcast_notification

View file

@ -135,7 +135,7 @@ class Procedure < ActiveRecord::Base
headers = exportable_dossiers.any? ? exportable_dossiers.first.export_headers : []
data = exportable_dossiers.map do |dossier|
dossier.convert_specific_array_values_to_string(dossier.data_with_champs)
dossier.full_data_strings_array
end
{

View file

@ -18,7 +18,8 @@ class TypeDeChamp < ActiveRecord::Base
departements: 'departements',
engagement: 'engagement',
header_section: 'header_section',
explication: 'explication'
explication: 'explication',
dossier_link: 'dossier_link'
}
belongs_to :procedure

View file

@ -1,27 +1,41 @@
class ChampsService
def self.save_formulaire champs, params, check_mandatory=true
errors = Array.new
class << self
def save_champs(champs, params, check_mandatory = true)
fill_champs(champs, params)
champs.each do |champ|
champ.value = params[:champs]["'#{champ.id}'"]
champs.select(&:changed?).each(&:save)
if champ.type_champ == 'datetime'
champ.value = params[:champs]["'#{champ.id}'"]+
' ' +
params[:time_hour]["'#{champ.id}'"] +
':' +
params[:time_minute]["'#{champ.id}'"]
end
if check_mandatory
if champ.mandatory? && (champ.value.nil? || champ.value.blank?)
errors.push({message: "Le champ #{champ.libelle} doit être rempli."})
end
end
champ.save if champ.changed?
check_mandatory ? build_error_messages(champs) : []
end
errors
private
def fill_champs(champs, h)
datetimes, not_datetimes = champs.partition { |c| c.type_champ == 'datetime' }
not_datetimes.each { |c| c.value = h[:champs]["'#{c.id}'"] }
datetimes.each { |c| c.value = parse_datetime(c.id, h) }
end
def parse_datetime(champ_id, h)
"#{h[:champs]["'#{champ_id}'"]} #{extract_hour(champ_id, h)}:#{extract_minute(champ_id, h)}"
end
def extract_hour(champ_id, h)
h[:time_hour]["'#{champ_id}'"]
end
def extract_minute(champ_id, h)
h[:time_minute]["'#{champ_id}'"]
end
def build_error_messages(champs)
champs.select(&:mandatory_and_blank?)
.map { |c| build_champ_error_message(c) }
end
def build_champ_error_message(champ)
{ message: "Le champ #{champ.libelle} doit être rempli." }
end
end
end

View file

@ -1,17 +1,17 @@
.row{style:'height: 34px'}
.row{ style: 'height: 34px;' }
- unless smart_listing.empty?
%table.table#liste_gestionnaire
%thead
%th Enlever
%th#email{style:'text-align: right'} Email
%th#email{ style: 'text-align: right;' } Email
- @accompagnateurs_assign.each do |accompagnateur|
%tr
%td.col-md-1.col-lg-1.col-sm-1.col-xs-1.col-sm-1.col-xs-1.center
%a.btn.btn-primary{href: "#{admin_procedure_accompagnateurs_path(procedure_id: @procedure.id, accompagnateur_id: accompagnateur.id, to: AccompagnateurService::NOT_ASSIGN)}", 'data-method' => 'put'}
%a.btn.btn-primary{ href: "#{admin_procedure_accompagnateurs_path(procedure_id: @procedure.id, accompagnateur_id: accompagnateur.id, to: AccompagnateurService::NOT_ASSIGN)}", 'data-method' => 'put' }
.fa.fa-arrow-left
%td{style:'padding-top: 11px; font-size:15px; text-align:right'}= accompagnateur.email
%td{ style: 'padding-top: 11px; font-size: 15px; text-align: right;' }= accompagnateur.email
= smart_listing.paginate
= smart_listing.pagination_per_page_links

View file

@ -1,8 +1,8 @@
= smart_listing_controls_for(:accompagnateurs_not_assign, {class: "form-inline text-right"}) do
= smart_listing_controls_for(:accompagnateurs_not_assign, { class: "form-inline text-right" }) do
.form-group.filter.input-append
= text_field_tag :filter, '', class: "search form-control",
placeholder: "Recherche...", autocomplete: :off
%button.btn.btn-primary{type: :submit}
%button.btn.btn-primary{ type: :submit }
%span.fa.fa-search
- unless smart_listing.empty?
@ -14,9 +14,9 @@
- @accompagnateurs_not_assign.each do |accompagnateur|
%tr
%td.col-xs-11{style:'padding-top: 11px; font-size:15px'}= accompagnateur.email
%td.col-xs-11{ style: 'padding-top: 11px; font-size: 15px;' }= accompagnateur.email
%td.center
%a.btn.btn-success.gestionnaire-affectation{href: "#{admin_procedure_accompagnateurs_path(procedure_id: @procedure.id, accompagnateur_id: accompagnateur.id, to: AccompagnateurService::ASSIGN)}", 'data-method' => 'put'}
%a.btn.btn-success.gestionnaire-affectation{ href: "#{admin_procedure_accompagnateurs_path(procedure_id: @procedure.id, accompagnateur_id: accompagnateur.id, to: AccompagnateurService::ASSIGN)}", 'data-method' => 'put' }
.fa.fa-arrow-right

View file

@ -9,15 +9,15 @@
%h3
= t('dynamics.admin.procedure.onglet_accompagnateurs.add.title')
#procedure_new.section.section-label
= form_for @gestionnaire, url: {controller: 'admin/gestionnaires', action: :create} do |f|
= form_for @gestionnaire, url: { controller: 'admin/gestionnaires', action: :create } do |f|
.row
.col-xs-5
= hidden_field_tag :procedure_id, params[:procedure_id]
=render partial: 'admin/gestionnaires/informations', locals: {f: f}
= render partial: 'admin/gestionnaires/informations', locals: { f: f }
.col-xs-2
%br
%br
= f.submit 'Valider', class: 'btn btn-info', style: 'float:left', id: 'add-gestionnaire-email'
= f.submit 'Valider', class: 'btn btn-info', style: 'float: left;', id: 'add-gestionnaire-email'
.col-xs-6
%h3.text-success Affectés
= smart_listing_render :accompagnateurs_assign

View file

@ -10,8 +10,8 @@
= @dossier.decorate.display_state
%br
État souhaité :
%select{id: :next_state, name: :next_state}
%select{ id: :next_state, name: :next_state }
- Dossier.states.each do |state|
%option{value: state[0]}
=DossierDecorator.case_state_fr state[1]
%option{ value: state[0] }
= DossierDecorator.case_state_fr state[1]
= f.submit 'Valider'

View file

@ -1,4 +1,4 @@
-{email: 'Email*'}.each do |key, value|
- { email: 'Email*' }.each do |key, value|
.form-group
%h4
= value

View file

@ -2,17 +2,17 @@
%table.table#liste_gestionnaire
%thead
%th#libelle= smart_listing.sortable 'Email', 'email'
%th= ''
%th
- @gestionnaires.each do |gestionnaire|
%tr
%td{style:'padding-top: 11px; font-size:15px'}= gestionnaire.email
%td{ style: 'text-align:right' }
%td{ style: 'padding-top: 11px; font-size: 15px;' }= gestionnaire.email
%td{ style: 'text-align: right;' }
.delete.btn.btn-sm.fa.fa-trash
.confirm
=link_to 'Valider', admin_gestionnaire_path(id: gestionnaire.id), {method: :delete, class: 'btn btn-sm btn-success'}
.cancel.btn.btn-sm.btn-danger.fa.fa-minus{style: 'top: 0'}
= link_to 'Valider', admin_gestionnaire_path(id: gestionnaire.id), { method: :delete, class: 'btn btn-sm btn-success' }
.cancel.btn.btn-sm.btn-danger.fa.fa-minus{ style: 'top: 0;' }
= smart_listing.paginate
= smart_listing.pagination_per_page_links

View file

@ -9,11 +9,11 @@
.col-xs-6
%h3 Ajouter un accompagnateur
#procedure_new.section.section-label
= form_for @gestionnaire, url: {controller: 'admin/gestionnaires', action: :create} do |f|
= form_for @gestionnaire, url: { controller: 'admin/gestionnaires', action: :create } do |f|
.row
.col-xs-5
= render partial: 'informations', locals: {f: f}
= render partial: 'informations', locals: { f: f }
.col-xs-2
%br
%br
= f.submit 'Valider', class: 'btn btn-info', style: 'float:left'
= f.submit 'Valider', class: 'btn btn-info', style: 'float: left;'

View file

@ -9,7 +9,7 @@
.row
.col-md-6
= f.input :object, label: "Objet de l'email"
= f.input :body, label: "Corps de l'email", input_html: {class: 'wysihtml5'}
= f.input :body, label: "Corps de l'email", input_html: { class: 'wysihtml5' }
.text-right
= link_to "Annuler", admin_procedure_mail_templates_path(@procedure), class: "btn btn-default"
= f.button :submit, 'Mettre à jour', class: "btn-success"
@ -27,4 +27,4 @@
%td.center
= "--#{balise.first}--"
%td
=balise.second[:description]
= balise.second[:description]

View file

@ -2,16 +2,16 @@
.form-inline
.form-group
%h4 Libellé
=ff.text_field :libelle, class: 'form-control libelle', placeholder: 'Libellé'
= ff.text_field :libelle, class: 'form-control libelle', placeholder: 'Libellé'
.form-group
%h4 Description
=ff.text_area :description, class: 'form-control description', placeholder: 'Description'
= ff.text_area :description, class: 'form-control description', placeholder: 'Description'
.form-group
%h4
Lien du formulaire vierge
%small
(optionel)
=ff.url_field :lien_demarche, class: 'form-control', placeholder: 'Lien du document vierge'
= ff.url_field :lien_demarche, class: 'form-control', placeholder: 'Lien du document vierge'
.form-group
= ff.hidden_field :order_place, value: ff.index

View file

@ -1,7 +1,7 @@
= form_for [:admin, @procedure], url: admin_procedure_pieces_justificatives_path(@procedure) , remote: true do |f|
= form_for [:admin, @procedure], url: admin_procedure_pieces_justificatives_path(@procedure), remote: true do |f|
#liste_piece_justificative
= render partial: 'fields', locals:{ types_de_piece_justificative: @procedure.types_de_piece_justificative_ordered.decorate, f: f }
= render partial: 'fields', locals: { types_de_piece_justificative: @procedure.types_de_piece_justificative_ordered.decorate, f: f }
= f.submit "Enregistrer", class: 'btn btn-success', id: :save
%hr
#new_type_de_piece_justificative
= render partial: 'fields', locals:{ types_de_piece_justificative: TypeDePieceJustificative.new.decorate, f: f }
= render partial: 'fields', locals: { types_de_piece_justificative: TypeDePieceJustificative.new.decorate, f: f }

View file

@ -2,7 +2,7 @@
.alert.alert-info
Cette procédure est publiée, certains éléments de la description ne sont plus modifiables
-{libelle: 'Libellé*', description: 'Description*', organisation: 'Organisation', direction: 'Direction', lien_site_web: 'Lien site internet', lien_notice: 'Lien notice'}.each do |key, value|
- { libelle: 'Libellé*', description: 'Description*', organisation: 'Organisation', direction: 'Direction', lien_site_web: 'Lien site internet', lien_notice: 'Lien notice' }.each do |key, value|
.form-group
%h4
= value
@ -16,17 +16,17 @@
.col-md-6
%h4 Logo de la procédure
- unless @procedure.logo.blank?
= image_tag @procedure.decorate.logo_img, {style: 'height: 40px; display: inline; margin-right: 6px', id: 'preview_procedure_logo'}
= f.file_field :logo, accept: 'image/png, image/jpg, image/jpeg', style: 'display:inline'
= image_tag @procedure.decorate.logo_img, { style: 'height: 40px; display: inline; margin-right: 6px;', id: 'preview_procedure_logo' }
= f.file_field :logo, accept: 'image/png, image/jpg, image/jpeg', style: 'display: inline'
%div{style:'margin-top:5px'}
%div{ style: 'margin-top: 5px;' }
%i
Fichier accepté : JPG / JPEG / PNG
.col-md-6
%h4 Drapeau européen
.checkbox
%label
=f.check_box :euro_flag
= f.check_box :euro_flag
Afficher le drapeau européen
- unless @procedure.locked?
@ -37,7 +37,7 @@
= f.fields_for :module_api_carto, @procedure.module_api_carto do |ff|
.checkbox
%label
=ff.check_box :use_api_carto, id: :procedure_module_api_carto_use_api_carto
= ff.check_box :use_api_carto, id: :procedure_module_api_carto_use_api_carto
Utilisation de la cartographie
%ul#modules_api_carto
@ -67,7 +67,7 @@
%h4 Particuliers
.checkbox
%label
=f.check_box :for_individual
= f.check_box :for_individual
Cette procédure s'adresse à un public qui
%b
ne possède pas (ou pas encore) de numéro SIRET,
@ -83,7 +83,7 @@
.col-md-6
%h4 Options avancées
%label{ for: :auto_archive_on} Archivage automatique le
%label{ for: :auto_archive_on } Archivage automatique le
= f.text_field :auto_archive_on, id: 'auto_archive_on', value: @procedure.auto_archive_on.try{ |d| d.strftime("%d-%m-%Y") }, data: { provide: 'datepicker', 'date-language' => 'fr', 'date-format' => 'dd/mm/yyyy' }
(à 00h00)
%p.help-block

View file

@ -4,13 +4,13 @@
%th#ID= smart_listing.sortable 'ID', 'id'
%th#libelle= smart_listing.sortable 'Libellé', 'libelle'
- if @active_class
%th#lien Lien
%th Lien
%th#created_at= smart_listing.sortable 'Date création', 'created_at'
%th#lien Actions
%th Actions
- @procedures.each do |procedure|
- procedure = procedure.decorate
%tr{id: "tr_dossier_#{procedure.id}", 'data-dossier_url' => admin_procedure_path(id: procedure.id)}
%tr{ id: "tr_dossier_#{procedure.id}", 'data-dossier_url' => admin_procedure_path(id: procedure.id) }
%td= procedure.id
%td.col-xs-6
= procedure.libelle

View file

@ -1,17 +1,17 @@
#publishModal.modal.fade{"aria-labelledby" => "myModalLabel", :role => "dialog", :tabindex => "-1"}
.modal-dialog.modal-lg{:role => "document"}
#publishModal.modal.fade{ "aria-labelledby" => "myModalLabel", :role => "dialog", :tabindex => "-1" }
.modal-dialog.modal-lg{ :role => "document" }
= form_tag admin_procedure_publish_path(procedure_id: @procedure.id), method: :put, remote: true do
.modal-content
.modal-header
%button.close{"aria-label" => "Close", "data-dismiss" => "modal", :type => "button"}
%span{"aria-hidden" => "true"} ×
%button.close{ "aria-label" => "Close", "data-dismiss" => "modal", :type => "button" }
%span{ "aria-hidden" => "true" } ×
%h4#myModalLabel.modal-title
=@procedure.archived?? 'Réactiver' : 'Publier'
= @procedure.archived? ? 'Réactiver' : 'Publier'
la procédure
%span#publishModal_title
.modal-body
Vous vous apprêtez à
=@procedure.archived?? 'republier' : 'publier'
= @procedure.archived? ? 'republier' : 'publier'
votre procédure au public.
- unless @procedure.archived?
%b
@ -23,13 +23,13 @@
%br
%h4 Lien de la procédure
%p.center
="#{root_url}commencer/"
= "#{root_url}commencer/"
= text_field_tag('procedure_path', @procedure.default_path,
id: 'procedure_path',
placeholder: 'Chemin vers la procédure',
class:'form-control',
class: 'form-control',
maxlength: 30,
style: 'width: 300px; display: inline')
style: 'width: 300px; display: inline;')
#path_messages
#path_is_mine.text-warning.center.message
Ce lien est déjà utilisé par une de vos procédure.
@ -42,7 +42,7 @@
#path_is_invalid.text-danger.center.message
Ce lien n'est pas valide. Il doit comporter au moins 3 caractères et seuls les caractères a-z, 0-9 et '_' sont autorisés.
.modal-footer
= submit_tag "#{@procedure.archived?? 'Réactiver' : 'Publier'}", class: %w(btn btn btn-success),
= submit_tag "#{@procedure.archived? ? 'Réactiver' : 'Publier'}", class: %w(btn btn btn-success),
id: 'publish',
disabled: :disabled
= button_tag 'Annuler', class: %w(btn btn btn-default), id: 'cancel', data: { dismiss: 'modal' }

View file

@ -1,21 +1,21 @@
#transferModal.modal.fade{"aria-labelledby" => "TransferProcedureModal", :role => "dialog", :tabindex => "-1"}
.modal-dialog.modal-md{:role => "document"}
#transferModal.modal.fade{ "aria-labelledby" => "TransferProcedureModal", :role => "dialog", :tabindex => "-1" }
.modal-dialog.modal-md{ :role => "document" }
= form_tag admin_procedure_transfer_path(procedure_id: @procedure.id), method: :post, remote: true do
.modal-content
.modal-header
%button.close{"aria-label" => "Close", "data-dismiss" => "modal", :type => "button"}
%span{"aria-hidden" => "true"} ×
%button.close{ "aria-label" => "Close", "data-dismiss" => "modal", :type => "button" }
%span{ "aria-hidden" => "true" } ×
%h4#myModalLabel.modal-title
Petit transfert de procédure entre administrateur
.modal-body
%p
Cette fonctionnalité vous permet de transmettre un clone de votre procédure à un autre administrateur.
%div{style:'margin-top:20px'}
= text_field_tag :email_admin, '', {class: 'form-control',
%div{ style:'margin-top:20px' }
= text_field_tag :email_admin, '', { class: 'form-control',
type: 'email',
placeholder: 'Email administrateur cible',
style: 'width: 300px; margin-left:auto; margin-right:auto'}
%div#not_found_admin.center.text-danger{style:'display:none; margin-top: 10px'}
style: 'width: 300px; margin-left:auto; margin-right:auto' }
%div#not_found_admin.center.text-danger{ style:'display: none; margin-top: 10px;' }
Cet administrateur n'existe pas.
.modal-footer
= submit_tag "Envoyer", class: 'btn btn-success'

View file

@ -1,17 +1,17 @@
#onglets
%ul.nav.nav-tabs
%li{class: @draft_class}
%a{:href => "#{url_for :admin_procedures_draft}"}
%li{ class: @draft_class }
%a{ :href => "#{url_for :admin_procedures_draft}" }
%h5.text-primary
="Brouillons"
Brouillons
%li{class: @active_class}
%a{:href => "#{url_for :admin_procedures}"}
%li{ class: @active_class }
%a{ :href => "#{url_for :admin_procedures}" }
%h5.text-success
= "Actives"
Actives
%li{class: @archived_class}
%a{:href => "#{url_for :admin_procedures_archived}"}
%h5{style: 'color: black'}
="Archivées"
%li{ class: @archived_class }
%a{ :href => "#{url_for :admin_procedures_archived}" }
%h5{ style: 'color: black;' }
Archivées
%br

View file

@ -1,6 +1,6 @@
.row.white-back
#procedure_new.section.section-label
= form_for @procedure, url: url_for({controller: 'admin/procedures', action: :update, id: @procedure.id}), multipart: true do |f|
= render partial: 'informations', locals: {f: f}
= form_for @procedure, url: url_for({ controller: 'admin/procedures', action: :update, id: @procedure.id }), multipart: true do |f|
= render partial: 'informations', locals: { f: f }
.text-right
= f.submit 'Enregistrer', class: 'btn btn-success'

View file

@ -1,14 +1,14 @@
#admins_index
.default_data_block.default_visible
%div.row.show-block#new_dossiers
%div.header
%div.col-lg-10.col-md-10.col-sm-10.col-xs-10.title
%div.carret-right
%div.carret-down
.row.show-block#new_dossiers
.header
.col-lg-10.col-md-10.col-sm-10.col-xs-10.title
.carret-right
.carret-down
Procédures
%a{href:'/admin/procedures/new'}
%a{ href: '/admin/procedures/new' }
%div#new-procedure.col-lg-2.col-md-2.col-sm-2.col-xs-2.action
Nouvelle
%div.body
.body
= smart_listing_render :procedures

View file

@ -1,8 +1,8 @@
.row.white-back
%h2
=t('dynamics.admin.dossiers.tableau_de_bord.nouvelle_procedure')
= t('dynamics.admin.dossiers.tableau_de_bord.nouvelle_procedure')
#procedure_new.section.section-label
= form_for @procedure, url: {controller: 'admin/procedures', action: :create}, multipart: true do |f|
= render partial: 'informations', locals: {f: f}
= f.submit 'Valider', class: 'btn btn-info', id: 'save-procedure', style: 'float:right'
= form_for @procedure, url: { controller: 'admin/procedures', action: :create }, multipart: true do |f|
= render partial: 'informations', locals: { f: f }
= f.submit 'Valider', class: 'btn btn-info', id: 'save-procedure', style: 'float: right;'

View file

@ -1,40 +1,40 @@
.row.white-back
#procedure_show
-unless @facade.procedure.published?
- unless @facade.procedure.published?
- if @facade.procedure.gestionnaires.size == 0
%a.action_button.btn.btn-success{style:'float: right; margin-top: 10px', disabled: 'disabled', 'data-toggle' => :tooltip, title: 'Vous ne pouvez pas publier une procédure sans qu\'aucun accompagnateur ne soit affecté à celle-ci.', id: 'publish-procedure'}
%a.action_button.btn.btn-success{ style: 'float: right; margin-top: 10px;', disabled: 'disabled', 'data-toggle' => :tooltip, title: 'Vous ne pouvez pas publier une procédure sans qu\'aucun accompagnateur ne soit affecté à celle-ci.', id: 'publish-procedure' }
%i.fa.fa-eraser
Publier
- else
%a.btn.btn-success{"data-target" => "#publishModal", "data-toggle" => "modal", :type => "button", style:'float: right; margin-top: 10px', id: 'publish-procedure'}
%a.btn.btn-success{ "data-target" => "#publishModal", "data-toggle" => "modal", :type => "button", style: 'float: right; margin-top: 10px;', id: 'publish-procedure' }
%i.fa.fa-eraser
Publier
=render partial: '/admin/procedures/modal_publish'
= render partial: '/admin/procedures/modal_publish'
%a#transfer.btn.btn-small.btn-default{"data-target" => "#transferModal", "data-toggle" => "modal", :type => "button", style:'float: right; margin-top: 10px; margin-right: 10px'}
%a#transfer.btn.btn-small.btn-default{ "data-target" => "#transferModal", "data-toggle" => "modal", :type => "button", style: 'float: right; margin-top: 10px; margin-right: 10px;' }
%i.fa.fa-exchange
Transférer
=render partial: '/admin/procedures/modal_transfer'
= render partial: '/admin/procedures/modal_transfer'
- if @facade.procedure.archived?
%a#reenable.btn.btn-small.btn-default.text-info{"data-target" => "#publishModal", "data-toggle" => "modal", :type => "button", style:'float: right; margin-top: 10px'}
%a#reenable.btn.btn-small.btn-default.text-info{ "data-target" => "#publishModal", "data-toggle" => "modal", :type => "button", style: 'float: right; margin-top: 10px;' }
%i.fa.fa-eraser
Réactiver
= render partial: '/admin/procedures/modal_publish'
- elsif @facade.procedure.published?
= form_tag admin_procedure_archive_path(procedure_id: @facade.procedure.id, archive: !@facade.procedure.archived?), method: :put, style:'float: right; margin-top: 10px' do
%button#archive.btn.btn-small.btn-default.text-info{type: :button}
= form_tag admin_procedure_archive_path(procedure_id: @facade.procedure.id, archive: !@facade.procedure.archived?), method: :put, style: 'float: right; margin-top: 10px;' do
%button#archive.btn.btn-small.btn-default.text-info{ type: :button }
%i.fa.fa-eraser
= 'Archiver'
Archiver
#confirm
%button#valid.btn.btn-small.btn-success{type: :submit}
%button#valid.btn.btn-small.btn-success{ type: :submit }
%i.fa.fa-check
Valider
%button#cancel.btn.btn-small.btn-danger{type: :button}
%button#cancel.btn.btn-small.btn-danger{ type: :button }
%i.fa.fa-remove
Annuler
@ -45,7 +45,7 @@
%div
%h3 Lien procédure
%div{style:'margin-left:3%'}
%div{ style: 'margin-left: 3%;' }
- if @facade.procedure.published?
= link_to @facade.procedure.lien, @facade.procedure.lien, target: '_blank'
- else
@ -55,7 +55,7 @@
%br
%h3 Détails
.row{style:'margin-right:3%; margin-left:3%;'}
.row{ style: 'margin-right: 3%; margin-left: 3%;' }
.description.col-xs-6.col-md-3.procedure-description
%h4.text-info
= @facade.procedure.libelle
@ -90,10 +90,10 @@
%br
%br
%h3
=t('dynamics.admin.procedure.stats.title')
= t('dynamics.admin.procedure.stats.title')
.row
.col-xs-6{style:'margin-left:3%'}
.col-xs-6{ style: 'margin-left: 3%;' }
%h4 Total
%div
= @facade.dossiers_total
@ -129,4 +129,4 @@
- if @facade.dossiers_for_pie_highchart.blank?
Aucune statistique pour le moment
- else
=pie_chart @facade.dossiers_for_pie_highchart
= pie_chart @facade.dossiers_for_pie_highchart

View file

@ -14,7 +14,7 @@
%h4 Description
= ff.text_area :description, class: 'form-control description', placeholder: 'Description', rows: 3
.form-group.drop_down_list{ class: (%w(drop_down_list multiple_drop_down_list).include?(type_champ) ? 'show_inline' : nil), style: 'margin-right: 5px' }
.form-group.drop_down_list{ class: (%w(drop_down_list multiple_drop_down_list).include?(type_champ) ? 'show_inline' : nil), style: 'margin-right: 5px;' }
%h4 Liste déroulante
= ff.fields_for :drop_down_list_attributes, ff.object.object.drop_down_list do |fff|
~ fff.text_area :value, class: 'form-control drop_down_list', placeholder: "Ecrire une valeur par ligne et --valeur-- pour un séparateur.", rows: 3, cols: 30

View file

@ -1,4 +1,4 @@
= form_for [:admin, @procedure], url: @types_de_champ_facade.url , remote: true do |f|
= form_for [:admin, @procedure], url: @types_de_champ_facade.url, remote: true do |f|
= render partial: 'admin/types_de_champ/fields', locals: { types_de_champ: @types_de_champ_facade.types_de_champ, f: f }
= f.submit "Enregistrer", class: 'btn btn-success', id: :save
%hr

View file

@ -3,12 +3,12 @@
= image_tag(image_url(LOGO_NAME))
%br
%h2#login_admin
=t('dynamics.admin.connexion_title')
= t('dynamics.admin.connexion_title')
%br
%br
#new_user
= form_for @administrateur, url: {controller: 'administrateurs/sessions', action: :create } do |f|
= form_for @administrateur, url: { controller: 'administrateurs/sessions', action: :create } do |f|
%h4
= f.label :email
.input-group
@ -25,5 +25,5 @@
%br
%br
.actions
= f.submit "Se connecter", class:'btn btn-primary'
= f.submit "Se connecter", class: 'btn btn-primary'
%br

View file

@ -1,19 +1,16 @@
.container
.mt-1
= form_for @admin, url: {controller: 'administrations', action: :create} do |f|
= form_for @admin, url: { controller: 'administrations', action: :create } do |f|
.form-group.form-inline.text-center
= f.text_field :email, placeholder: :email, class: 'form-control'
= f.text_field :password, placeholder: :password, class: 'form-control'
= f.submit 'Créer un administrateur', class: 'btn btn-success', id: 'submit_new_administrateur'
.text-center
=link_to 'Stats', administrations_stats_path, style: 'margin-bottom: 50px; display: block', 'data-no-turbolink': true
= smart_listing_render :admins
%br
%br
.text-center
=link_to 'Deconnexion', '/administrations/sign_out', method: :delete
= link_to 'Deconnexion', '/administrations/sign_out', method: :delete

View file

@ -1,11 +0,0 @@
= javascript_include_tag 'https://code.highcharts.com/highcharts.js', 'chartkick'
.container
.stats
.stat-card
%h1 Procédures créées
= line_chart @procedures
.stat-card
%h1 Dossiers créés
= line_chart @dossiers

View file

@ -1,10 +1,10 @@
%div.filter_framed.panel.panel-primary{id: "#{filter_framed_id}", style:'width: 300px; height: 100px; position: absolute; top: 0; left: 0; display: none'}
.filter_framed.panel.panel-primary{ id: "#{filter_framed_id}", style: 'width: 300px; height: 100px; position: absolute; top: 0; left: 0; display: none;' }
.panel-heading
= preference.libelle
=form_tag @facade_data_view.filter_url, {class: 'panel-body form-inline', method: :post} do
%input.form-control.filter_input{name: "filter_input[#{preference.table_attr}]", style:'width: 69%', value: "#{preference.filter}"}
= form_tag @facade_data_view.filter_url, { class: 'panel-body form-inline', method: :post } do
%input.form-control.filter_input{ name: "filter_input[#{preference.table_attr}]", style: 'width: 69%;', value: "#{preference.filter}" }
%button.btn.btn-sm.btn-success
%i.fa.fa-check
%div.btn.btn-sm.btn-danger.erase-filter
.btn.btn-sm.btn-danger.erase-filter
%i.fa.fa-remove

View file

@ -1,5 +1,5 @@
%h3
=t('dynamics.dossiers.followers.title')
= t('dynamics.dossiers.followers.title')
%br
.row

View file

@ -8,21 +8,21 @@
- @facade_data_view.preference_list_dossiers_filter.each do |preference|
- unless preference.libelle == 'Statut' || preference.libelle == 'État'
%th{class: "col-md-#{preference.bootstrap_lg} col-lg-#{preference.bootstrap_lg}"}
%th{ class: "col-md-#{preference.bootstrap_lg} col-lg-#{preference.bootstrap_lg}" }
- if preference.table.to_s.include? 'champs'
= preference.libelle
-else
- else
= smart_listing.sortable preference.libelle, preference.table_attr
- if @facade_data_view.active_filter? preference
%i.filter.fa.fa-filter{style: "color:#{(preference.filter.blank? ? 'grey' : 'orange')}", id: "filter_#{smart_listing.name.to_s}_#{preference.table_attr.sub('.', '_')}"}
= render partial: 'backoffice/dossiers/filter_framed', locals:{preference: preference, filter_framed_id: "framed_filter_#{smart_listing.name.to_s}_#{preference.table_attr.sub('.', '_')}"}
%i.filter.fa.fa-filter{ style: "color: #{(preference.filter.blank? ? 'grey' : 'orange')}", id: "filter_#{smart_listing.name.to_s}_#{preference.table_attr.sub('.', '_')}" }
= render partial: 'backoffice/dossiers/filter_framed', locals: { preference: preference, filter_framed_id: "framed_filter_#{smart_listing.name.to_s}_#{preference.table_attr.sub('.', '_')}" }
%th.col-xs-1.center Actions
%th.col-xs-1.center Abonnés
- unless smart_listing.empty?
- smart_listing.collection.each do |dossier|
%tr.dossier-row{id: "tr_dossier_#{dossier.id}", 'data-dossier_url' => backoffice_dossier_url(id: dossier.id)}
%tr.dossier-row{ id: "tr_dossier_#{dossier.id}", 'data-dossier_url' => backoffice_dossier_url(id: dossier.id) }
- if smart_listing.name.to_s == 'follow_dossiers'
%td.col-xs-1.center
- total_notif = dossier.notifications.where(already_read: false).count
@ -54,9 +54,9 @@
%td.center
- if current_gestionnaire.follow?(dossier.id)
= link_to('Quitter'.html_safe, backoffice_dossier_follow_path(dossier_id: dossier.id), 'data-method' => :put, class: 'btn-sm btn-danger', id: "suivre_dossier_#{dossier.id}")
-else
- else
= link_to('Suivre', backoffice_dossier_follow_path(dossier_id: dossier.id), 'data-method' => :put, class: 'btn-sm btn-primary', id: "suivre_dossier_#{dossier.id}")
%td.center{style:"color: #{dossier.total_follow == 0 ? 'red' : ''}"}
%td.center{ style: "color: #{dossier.total_follow == 0 ? 'red' : ''}" }
= dossier.total_follow
= smart_listing.paginate

View file

@ -1,10 +1,10 @@
%button#pref_list_dossier_close_action.btn.btn-danger.btn-xs.fixed-right
%i.fa.fa-close
%h3
=t('dynamics.backoffice.pref_list.title')
= t('dynamics.backoffice.pref_list.title')
%p{style:'margin-top: 15px; margin-bottom: 20px'}
=t('dynamics.backoffice.pref_list.description')
%p{ style: 'margin-top: 15px; margin-bottom: 20px;' }
= t('dynamics.backoffice.pref_list.description')
%h4.text-primary
Actuelles
@ -16,10 +16,10 @@
= hidden_field_tag :pref_id, preference.id
= hidden_field_tag :procedure_id, preference.procedure_id
= preference.libelle
%button.btn.btn-default.btn-xs{type: :submit, id: "delete_pref_list_#{preference[:table]}_#{preference[:attr]}"}
%button.btn.btn-default.btn-xs{ type: :submit, id: "delete_pref_list_#{preference[:table]}_#{preference[:attr]}" }
%i.fa.fa-minus
%h4.text-success{style:'margin-top: 15px'}
%h4.text-success{ style: 'margin-top: 15px;' }
Disponibles
%table
@ -27,7 +27,7 @@
- if index%2 == 0 || tables.first.to_s.include?('champs')
%tr
%td.col-xs-5{style: 'vertical-align: top', colspan: (tables.first == :champs ? 2 : 1)}
%td.col-xs-5{ style: 'vertical-align: top;', colspan: (tables.first == :champs ? 2 : 1) }
%h5= tables.first.to_s.gsub('_', ' ').capitalize
%ul
- if tables.second
@ -42,5 +42,5 @@
= hidden_field_tag :procedure_id, @facade_data_view.procedure_id
= columns.second[:libelle]
%button.btn.btn-default.btn-xs{type: :submit, id: "add_pref_list_#{columns.second[:table]}_#{columns.second[:attr]}"}
%button.btn.btn-default.btn-xs{ type: :submit, id: "add_pref_list_#{columns.second[:table]}_#{columns.second[:attr]}" }
%i.fa.fa-plus

View file

@ -1,21 +1,21 @@
#state_description.row{style:'width: 50%; margin-left: auto; margin-right: auto'}
#state_description.row{ style: 'width: 50%; margin-left: auto; margin-right: auto;' }
.panel.panel-info
.panel-body.center
.row
.col-md-1.col-lg-1.col-sm-1.col-xs-1.col-sm-1.col-xs-1
.fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'}
.fa.fa-info-circle.text-info{ style: 'font-size: 2em; margin-top: 20%;' }
.col-xs-11
-if dossiers_list_facade.liste == 'nouveaux'
- if dossiers_list_facade.liste == 'nouveaux'
Tous les dossiers présents dans cette liste sont ceux qui
%b
n'ont jamais été ouvert par votre service.
Il attende une première lecture et intervention de votre part.
-elsif dossiers_list_facade.liste == 'a_traiter'
- elsif dossiers_list_facade.liste == 'a_traiter'
Tous les dossiers présents dans cette liste sont ceux qui sont
%b
en cours de construction avec l'usager.
Ils ne sont pas figés et ne sont donc pas complets.
-elsif dossiers_list_facade.liste == 'fige'
- elsif dossiers_list_facade.liste == 'fige'
Tous les dossiers présents dans cette liste ont été déclarés
%b
complets
@ -23,14 +23,14 @@
%b
plus modifiables par l'usager.
Ils attendent donc leurs dépots officiels qui doit être effectué par l'usager.
-elsif dossiers_list_facade.liste == 'deposes'
- elsif dossiers_list_facade.liste == 'deposes'
Tous les dossiers présents dans cette liste ont été
%b
officiellement déposé par l'usager pour examen.
Il faut donc que vous confirmiez par "accusé de réception" la bonne réception de toutes les informations et documents demandés avant examen final.
-elsif dossiers_list_facade.liste == 'a_instruire'
- elsif dossiers_list_facade.liste == 'a_instruire'
Tous les dossiers présents dans cette liste sont à instruire. Ceux sont tous les dossiers
%b
qui ont reçu bonne réception.
-elsif dossiers_list_facade.liste == 'termine'
- elsif dossiers_list_facade.liste == 'termine'
Tous les dossiers présents dans cette liste sont considérés comme cloturé car ils ont tous reçu un verdict final qui peut être "Validé", "Refusé" ou "Sans suite".

View file

@ -16,13 +16,13 @@
.row.center
.col-xs-3
=link_to 'Tous les états', '?liste=all_state', class: 'text-info', style:"text-decoration: #{@facade_data_view.liste == 'all_state'? 'underline' : ''}"
= link_to 'Tous les états', '?liste=all_state', class: 'text-info', style: "text-decoration: #{@facade_data_view.liste == 'all_state'? 'underline' : ''}"
.col-xs-3
=link_to 'En construction', '?liste=a_traiter', class: 'text-danger', style:"text-decoration: #{@facade_data_view.liste == 'a_traiter'? 'underline' : ''}"
= link_to 'En construction', '?liste=a_traiter', class: 'text-danger', style: "text-decoration: #{@facade_data_view.liste == 'a_traiter'? 'underline' : ''}"
.col-xs-3
=link_to 'En instruction', '?liste=a_instruire', class: 'text-warning', style:"text-decoration: #{@facade_data_view.liste == 'a_instruire'? 'underline' : ''}"
= link_to 'En instruction', '?liste=a_instruire', class: 'text-warning', style: "text-decoration: #{@facade_data_view.liste == 'a_instruire'? 'underline' : ''}"
.col-xs-3
=link_to 'Terminés', '?liste=termine', class: 'text-success', style:"text-decoration: #{@facade_data_view.liste == 'termine'? 'underline' : ''}"
= link_to 'Terminés', '?liste=termine', class: 'text-success', style: "text-decoration: #{@facade_data_view.liste == 'termine'? 'underline' : ''}"
.default_data_block.default_visible
.row.show-block#follow_dossiers

View file

@ -3,14 +3,14 @@
= render partial: 'backoffice/dossiers/pref_list'
.default_data_block.default_visible
%div.row.show-block#new_dossiers
%div.header
%div.col-lg-10.col-md-10.col-sm-10.col-xs-10.title
%div.carret-right
%div.carret-down
.row.show-block#new_dossiers
.header
.col-lg-10.col-md-10.col-sm-10.col-xs-10.title
.carret-right
.carret-down
Résultat de la recherche
%div.col-lg-2.col-md-2.col-sm-2.col-xs-2.count
=@dossiers.count
.col-lg-2.col-md-2.col-sm-2.col-xs-2.count
= @dossiers.count
dossiers
%div.body
.body
= smart_listing_render :search

View file

@ -41,14 +41,14 @@
%br
%h3#object_website
Object du site internet
%a{:href => "https://tps.apientreprise.fr/"}
%a{ :href => "https://tps.apientreprise.fr/" }
%strong tps.apientreprise.fr
%p
Le site internet tps.apientreprise.fr a pour objet de faciliter la création de démarches administratives en ligne par les acteurs publics, et lexamen par plusieurs services des demandes formulées par les usagers auprès dun ou organismes publics.
%br
%h3#acteurs
Acteurs de
%a{:href => "https://tps.apientreprise.fr/"}
%a{ :href => "https://tps.apientreprise.fr/" }
TPS
%p Les acteurs de TPS sont les suivants :
%ul
@ -64,7 +64,7 @@
%li N° de sécurité sociale,
%li Infractions, condamnations, mesures de sécurité,
%li
%a{:href => "https://www.declaration.cnil.fr/declarations/declaration/donneesSensibles_DN.display.action"} Opinions philosophiques, politiques, religieuses, syndicales, vie sexuelle, données de santé, origine raciale.
%a{ :href => "https://www.declaration.cnil.fr/declarations/declaration/donneesSensibles_DN.display.action" } Opinions philosophiques, politiques, religieuses, syndicales, vie sexuelle, données de santé, origine raciale.
%br
%h3#data_collects
Données collectées et responsabilité des organismes publics à linitiative de démarches en ligne avec TPS.
@ -78,7 +78,7 @@
%h4 Données personnelles :
%p
En application de la loi n°78-17 Informatique et Libertés du 6 janvier 1978, vous disposez d'un droit d'accès, de rectification, de modification et de suppression concernant les données qui vous concernent. Vous pouvez exercer ce droit à travers la rubrique
%a{:href => "http://www.faire-simple.gouv.fr/contact"} Contact
%a{ :href => "http://www.faire-simple.gouv.fr/contact" } Contact
%h4 Données de connexion :
%p Conformément à la loi n°2004-575 du 21 juin 2004 pour la confiance dans léconomie numérique, certaines données de connexion sont conservées par le service aux fins de protection contre les intrusions et de poursuites judiciaires le cas échéant. Ces données sont conservées pendant un an.
@ -97,9 +97,9 @@
%br/
Tél. : 01 41 17 50 50
%p
%a{:href => "http://www.insee.fr/fr/bases-de-donnees/default.asp?page=sirene.htm"} Informations de la base SIRENE
%a{ :href => "http://www.insee.fr/fr/bases-de-donnees/default.asp?page=sirene.htm" } Informations de la base SIRENE
%br/
%a{:href => "http://www.sirene.fr/sirene/public/static/mentions-legales"} Condition légales dutilisation de service SIRENE
%a{ :href => "http://www.sirene.fr/sirene/public/static/mentions-legales" } Condition légales dutilisation de service SIRENE
%br
%h4 INFOGREFFE :
%p
@ -112,9 +112,9 @@
94300 VINCENNES
%p
Les informations transmises aux autorités publiques en charges de lexamen de dossiers de candidature sont définis par le service en ligne suivant proposé aux internautes :
%a{:href => "https://www.infogreffe.fr/societes/documents-officiels/demande-kbis.html"} https://www.infogreffe.fr/societes/documents-officiels/demande-kbis.html
%a{ :href => "https://www.infogreffe.fr/societes/documents-officiels/demande-kbis.html" } https://www.infogreffe.fr/societes/documents-officiels/demande-kbis.html
%p
%a{:href => "https://www.infogreffe.fr/societes/cgu-cgv.html"} Conditions générales dutilisation des données dinfogreffe
%a{ :href => "https://www.infogreffe.fr/societes/cgu-cgv.html" } Conditions générales dutilisation des données dinfogreffe
%br
%h4 TPS fait appel à dautres services opérés par le SGMAP afin de faciliter les démarches administratives :
@ -122,18 +122,18 @@
%p
%strong> France CONNECT
\ : informations complémentaires :
%a{:href => "https://franceconnect.gouv.fr/"} https://franceconnect.gouv.fr/
%a{ :href => "https://franceconnect.gouv.fr/" } https://franceconnect.gouv.fr/
%p
%strong La base dadresse nationale :
%a{:href => "https://adresse.data.gouv.fr/"} https://adresse.data.gouv.fr/
%a{ :href => "https://adresse.data.gouv.fr/" } https://adresse.data.gouv.fr/
%p
%strong TPS est un service de lEtat Plateforme :
%a{:href => "http://etatplateforme.modernisation.gouv.fr/"} http://etatplateforme.modernisation.gouv.fr/
%a{ :href => "http://etatplateforme.modernisation.gouv.fr/" } http://etatplateforme.modernisation.gouv.fr/
%p
%strong Il met en œuvre les principes définis par le programme « Dites-le nous une fois »
%p
%a{:href => "http://www.modernisation.gouv.fr/les-services-publics-se-simplifient-et-innovent/par-des-simplifications-pour-les-entreprises/dites-le-nous-une-fois-un-programme-pour-simplifier-la-vie-des-entreprises"} http://www.modernisation.gouv.fr/les-services-publics-se-simplifient-et-innovent/par-des-simplifications-pour-les-entreprises/dites-le-nous-une-fois-un-programme-pour-simplifier-la-vie-des-entreprises
%a{ :href => "http://www.modernisation.gouv.fr/les-services-publics-se-simplifient-et-innovent/par-des-simplifications-pour-les-entreprises/dites-le-nous-une-fois-un-programme-pour-simplifier-la-vie-des-entreprises" } http://www.modernisation.gouv.fr/les-services-publics-se-simplifient-et-innovent/par-des-simplifications-pour-les-entreprises/dites-le-nous-une-fois-un-programme-pour-simplifier-la-vie-des-entreprises
%br
%h3#reproduction
Droit de reproduction :
@ -143,7 +143,7 @@
%p Lautorisation de création de liens est valable pour tout support, à lexception de ceux diffusant des informations à caractère raciste, pornographique, xénophobe ou pouvant porter atteinte à la sensibilité du plus grand nombre.
%p
La rubrique
%a{:href => "http://www.faire-simple.gouv.fr/contact"} Contactez-nous
%a{ :href => "http://www.faire-simple.gouv.fr/contact" } Contactez-nous
est à votre disposition pour nous faire part de vos remarques et suggestions.
%br
%h3#propriete_intellectuelle

View file

@ -1,8 +1,8 @@
%br
%div{style: 'text-align: center; max-width:500px; margin-left:auto; margin-right:auto; padding: 20px;'}
%div{ style: 'text-align: center; max-width: 500px; margin-left: auto; margin-right: auto; padding: 20px;' }
= render partial: 'users/sessions/resume_procedure'
.center{style:'margin-top: -20px'}
.center{ style: 'margin-top: -20px;' }
%h3
La campagne de création de nouveau dossier
%br
@ -11,5 +11,5 @@
%br
%p
Si vous avez déjà déposé un ou plusieurs dossiers :
%a.btn.btn-lg.btn-info{href: new_user_session_path}
%a.btn.btn-lg.btn-info{ href: new_user_session_path }
Accéder à mon espace en ligne.

View file

@ -1,7 +1,7 @@
- unless smart_listing.empty?
%table.table
%tr
%th{colspan: 4}
%th{ colspan: 4 }
%h4 Lien vers les procédures TPS
%tr
%th= smart_listing.sortable 'ID', 'id'

View file

@ -16,7 +16,7 @@
%tr
%td= file.user.nil? ? 'Accompagnateur' : file.user.email
%td= file.created_at.localtime
%td= link_to file.original_filename, file.content_url, style:'color: green', target: '_blank'
%td= link_to file.original_filename, file.content_url, style: 'color: green;', target: '_blank'
- else
%h4.text-primary
Pas de fichier dans le flux de commentaires.

View file

@ -2,66 +2,66 @@
- if @facade.procedure.individual_with_siret
.default_data_block
%div.row.show-block.infos
%div.header
%div.col-xs-8.title-no-expanse
%div.carret-right
.row.show-block.infos
.header
.col-xs-8.title-no-expanse
.carret-right
INFORMATIONS DU DEMANDEUR
- if !@current_gestionnaire && ["draft", "updated", "replied", "initiated"].include?(@facade.dossier.state)
%a#add_siret.action{href: users_dossier_add_siret_path(dossier_id: @facade.dossier.id)}
%div.col-lg-4.col-md-4.col-sm-4.col-xs-4.action
= "Renseigner un SIRET"
%a#add_siret.action{ href: users_dossier_add_siret_path(dossier_id: @facade.dossier.id) }
.col-lg-4.col-md-4.col-sm-4.col-xs-4.action
Renseigner un SIRET
- unless @facade.entreprise.nil?
.default_data_block
%div.row.show-block.infos#infos_entreprise
%div.header
%div.col-xs-12.title
%div.carret-right
%div.carret-down
.row.show-block.infos#infos_entreprise
.header
.col-xs-12.title
.carret-right
.carret-down
INFORMATIONS DU DEMANDEUR
%div.body.display-block-on-print
.body.display-block-on-print
= render partial: '/dossiers/infos_entreprise'
.default_data_block.default_visible
%div.row.show-block.infos#infos_dossier
%div.header
%div.col-xs-10.title
%div.carret-right
%div.carret-down
.row.show-block.infos#infos_dossier
.header
.col-xs-10.title
.carret-right
.carret-down
CONSTRUCTION DU DOSSIER
= render partial: '/dossiers/edit_dossier'
%div.body.display-block-on-print
.body.display-block-on-print
= render partial: '/dossiers/infos_dossier'
- if @facade.dossier.procedure.module_api_carto.use_api_carto
.default_data_block.default_visible.no-page-break-inside
%div.row.show-block#carto
%div.header
%div.col-xs-10.title
%div.carret-right
%div.carret-down
.row.show-block#carto
.header
.col-xs-10.title
.carret-right
.carret-down
CARTOGRAPHIE
= render partial: '/dossiers/edit_carto'
%div.body.display-block-on-print
%input{id: 'json_latlngs', type: 'hidden', value: "#{@facade.dossier.json_latlngs}", name: 'json_latlngs'}
%input{id: 'quartier_prioritaires', type: 'hidden', value: "#{@facade.dossier.quartier_prioritaires.to_json}"}
%input{id: 'cadastres', type: 'hidden', value: "#{@facade.dossier.cadastres.to_json}"}
.body.display-block-on-print
%input{ id: 'json_latlngs', type: 'hidden', value: "#{@facade.dossier.json_latlngs}", name: 'json_latlngs' }
%input{ id: 'quartier_prioritaires', type: 'hidden', value: "#{@facade.dossier.quartier_prioritaires.to_json}" }
%input{ id: 'cadastres', type: 'hidden', value: "#{@facade.dossier.cadastres.to_json}" }
= render partial: '/users/carte/map', locals: {dossier: @facade.dossier}
= render partial: 'users/carte/init_carto', locals: {dossier: @facade.dossier}
= render partial: '/users/carte/map', locals: { dossier: @facade.dossier }
= render partial: 'users/carte/init_carto', locals: { dossier: @facade.dossier }
- if @current_gestionnaire && gestionnaire_signed_in? && @champs_private.count > 0
.default_data_block.default_visible
%div.row.show-block#private-fields
%div.header
%div.col-xs-10.title
%div.carret-right
%div.carret-down
.row.show-block#private-fields
.header
.col-xs-10.title
.carret-right
.carret-down
= "formulaire privé".upcase
%div.col-xs-2.count
.col-xs-2.count
- private_fields_count = @champs_private.count
= (private_fields_count == 1) ? "1 champ" : "#{private_fields_count} champs"
%div.body
.body
= render partial: '/dossiers/infos_private_fields'

View file

@ -5,11 +5,11 @@
%span.caret
%ul.dropdown-menu.dropdown-menu-right
%li
= link_to backoffice_download_dossiers_tps_path(format: :csv, procedure_id: params[:id]), { class: 'btn btn-sm export-link' } do
= link_to backoffice_download_dossiers_tps_path(format: :csv, procedure_id: params[:id]), { class: 'btn btn-sm export-link' } do
= t('dynamics.backoffice.format_csv')
%li
= link_to backoffice_download_dossiers_tps_path(format: :xlsx, procedure_id: params[:id]), { class: 'btn btn-sm export-link' } do
= t('dynamics.backoffice.format_xlsx')
%li
= link_to backoffice_download_dossiers_tps_path(format: :ods, procedure_id: params[:id]), { class: 'btn btn-sm export-link' } do
= link_to backoffice_download_dossiers_tps_path(format: :ods, procedure_id: params[:id]), { class: 'btn btn-sm export-link' } do
= t('dynamics.backoffice.format_ods')

View file

@ -1,5 +1,5 @@
- unless @facade.dossier.read_only?
- if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email))
%a#maj_carte.action{href: "/users/dossiers/#{@facade.dossier.id}/carte"}
%div.col-lg-2.col-md-2.col-sm-2.col-xs-2.action
%a#maj_carte.action{ href: "/users/dossiers/#{@facade.dossier.id}/carte" }
.col-lg-2.col-md-2.col-sm-2.col-xs-2.action
= 'éditer'.upcase

View file

@ -1,5 +1,5 @@
- unless @facade.dossier.read_only?
- if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email))
%a#maj_infos.action{href: "/users/dossiers/#{@facade.dossier.id}/description"}
%a#maj_infos.action{ href: "/users/dossiers/#{@facade.dossier.id}/description" }
%div#edit-dossier.col-lg-2.col-md-2.col-sm-2.col-xs-2.action
= "éditer".upcase

View file

@ -1,11 +1,11 @@
- unless @facade.dossier.read_only?
- if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email))
- if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.size > 0
%div.col-lg-4.col-md-4.col-sm-4.col-xs-4.action
%a#maj_pj.action{"data-target" => "#UploadPJmodal",
.col-lg-4.col-md-4.col-sm-4.col-xs-4.action
%a#maj_pj.action{ "data-target" => "#UploadPJmodal",
"data-toggle" => "modal",
:type => "button",
style: 'margin-bottom: 15px; margin-top: -30px'}
style: 'margin-bottom: 15px; margin-top: -30px;' }
Modifier les documents
%br
= render partial: 'users/recapitulatif/modal_upload_pj'

View file

@ -1,11 +1,11 @@
.row
.col-xs-12
#map.mini{class: @facade.dossier.procedure.module_api_carto.classes}
#map.mini{ class: @facade.dossier.procedure.module_api_carto.classes }
%input{id: 'json_latlngs', type:'hidden', value: "#{@facade.dossier.json_latlngs}"}
%input{id: 'quartier_prioritaires', type:'hidden', value: "#{@facade.dossier.quartier_prioritaires.to_json}"}
%input{id: 'cadastres', type:'hidden', value: "#{@facade.dossier.cadastres.to_json}"}
%input{ id: 'json_latlngs', type: 'hidden', value: "#{@facade.dossier.json_latlngs}" }
%input{ id: 'quartier_prioritaires', type: 'hidden', value: "#{@facade.dossier.quartier_prioritaires.to_json}" }
%input{ id: 'cadastres', type: 'hidden', value: "#{@facade.dossier.cadastres.to_json}" }
%script{type: 'text/javascript'}
%script{ type: 'text/javascript' }
= "var dossier_id =#{@facade.dossier.id}"
initCarto();

View file

@ -1,26 +1,26 @@
%div.row
.row
.col-xs-12
- if @facade.procedure.for_individual?
.row.title-row
%div.col-xs-4.split-hr
%div.col-xs-4.dossier-title= t('utils.depositaire').upcase
%div.col-xs-4.split-hr
.col-xs-4.split-hr
.col-xs-4.dossier-title= t('utils.depositaire').upcase
.col-xs-4.split-hr
.row
%div.col-xs-6.depositaire-label Civilité
%div.col-xs-1.comments-off= "-"
%div.col-xs-5.depositaire-info= @facade.individual.gender
.col-xs-6.depositaire-label Civilité
.col-xs-1.comments-off= "-"
.col-xs-5.depositaire-info= @facade.individual.gender
.row
%div.col-xs-6.depositaire-label Nom
%div.col-xs-1.comments-off= "-"
%div.col-xs-5.depositaire-info= @facade.individual.nom
.col-xs-6.depositaire-label Nom
.col-xs-1.comments-off= "-"
.col-xs-5.depositaire-info= @facade.individual.nom
.row
%div.col-xs-6.depositaire-label Prénom
%div.col-xs-1.comments-off= "-"
%div.col-xs-5.despositaire-info= @facade.individual.prenom
.col-xs-6.depositaire-label Prénom
.col-xs-1.comments-off= "-"
.col-xs-5.despositaire-info= @facade.individual.prenom
.row
%div.col-xs-6.depositaire-label Date de naissance
%div.col-xs-1.comments-off= "-"
%div.col-xs-5.depositaire-info= @facade.individual.birthdate
.col-xs-6.depositaire-label Date de naissance
.col-xs-1.comments-off= "-"
.col-xs-5.depositaire-info= @facade.individual.birthdate
.row.margin-top-20
- unless @facade.champs.nil?
@ -28,32 +28,39 @@
- next if champ.type_champ == 'explication'
- if champ.type_champ == 'header_section'
.row.title-row.margin-top-40
%div.col-xs-3.split-hr
%div.col-xs-6.dossier-title= champ.libelle.upcase
%div.col-xs-3.split-hr
.col-xs-3.split-hr
.col-xs-6.dossier-title= champ.libelle.upcase
.col-xs-3.split-hr
- else
.row
%div.col-xs-6.depositaire-label= champ.libelle
%div.col-md-1.col-lg-1.col-sm-1.col-xs-1.comments-off
.col-xs-6.depositaire-label= champ.libelle
.col-xs-1.comments-off
= "-"
%div.col-xs-5.depositaire-info{ id: "champ-#{champ.id}-value" }
.col-xs-5.depositaire-info{ id: "champ-#{champ.id}-value" }
- unless champ.decorate.value.blank?
= champ.decorate.value.html_safe
- if champ.type_champ == 'dossier_link'
- dossier = Dossier.find_by(id: champ.decorate.value)
- if dossier && gestionnaire_signed_in?
= link_to(dossier.procedure.libelle, backoffice_dossier_path(champ.decorate.value), target: '_blank')
- else
= dossier.nil? ? 'pas de dossier associé' : dossier.procedure.libelle
- else
= champ.decorate.value.html_safe
- if @facade.dossier.mandataire_social && gestionnaire_signed_in?
.mandataire_social.text-success.center
%br
="Il est probable que le soumissionnaire du dossier soit un des mandataire social de l'entreprise ("
Il est probable que le soumissionnaire du dossier soit un des mandataire social de l'entreprise (
%b
="#{@facade.dossier.user.given_name} #{@facade.dossier.user.family_name}"
=")"
%div.row
= "#{@facade.dossier.user.given_name} #{@facade.dossier.user.family_name}"
)
.row
- if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.count > 0
.col-xs-12
.row.title-row
%div.col-xs-4.split-hr
%div.col-xs-4.dossier-title= t('utils.pieces').upcase
%div.col-xs-4.split-hr
.col-xs-4.split-hr
.col-xs-4.dossier-title= t('utils.pieces').upcase
.col-xs-4.split-hr
.col-xs-12#pieces_justificatives.margin-bot-40
.row
@ -65,39 +72,39 @@
.col-xs-5.despositaire-info
- if @facade.dossier.cerfa_available?
%a{ href: "#{@facade.dossier.cerfa.last.content_url}", target: '_blank' } Consulter
%span{style:'margin-left:12px'}
%span{ style: 'margin-left: 12px;' }
\-
= link_to "", class: "historique", "data-toggle" => "modal", "data-target" => "#PJmodal", :type => "button", "data-modal_title" => 'formulaires', "data-modal_index" => 'cerfa' do
%span.fa.fa-clock-o
- else
= 'Pièce non fournie'
Pièce non fournie
.row
.col-xs-12
- @facade.types_de_pieces_justificatives.each do |type_de_piece_justificative|
.row.piece-row
.col-xs-12{ id: "piece_justificative_#{type_de_piece_justificative.id}" }
.row
%div.col-xs-6.depositaire-label= type_de_piece_justificative.libelle
%div.col-xs-1.comments-off= "-"
%div.col-xs-5.despositaire-info
.col-xs-6.depositaire-label= type_de_piece_justificative.libelle
.col-xs-1.comments-off= "-"
.col-xs-5.despositaire-info
- if type_de_piece_justificative.api_entreprise
%span.text-success Nous l'avons récupéré pour vous.
- elsif !(@pj = @facade.dossier.retrieve_last_piece_justificative_by_type(type_de_piece_justificative.id)).nil?
%a{ href: "#{@pj.content_url}", target: '_blank' } Consulter
%span{style:'margin-left:12px'}
%span{ style: 'margin-left: 12px;' }
\-
- if @facade.dossier.pieces_justificatives.where(type_de_piece_justificative_id: type_de_piece_justificative.id).count > 1
= link_to "", class: "historique", "data-toggle" => "modal", "data-target" => "#PJmodal", :type => "button", "data-modal_title" => 'formulaires', "data-modal_index" => "type_de_pj_#{type_de_piece_justificative.id}" do
%span.fa.fa-clock-o
- else
= 'Pièce non fournie'
Pièce non fournie
- unless @facade.dossier.read_only?
- if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email))
- if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.size > 0
.row
.col-xs-4
%a#maj_pj.action{"data-target" => "#UploadPJmodal", "data-toggle" => "modal", :type => "button"}
%a#maj_pj.action{ "data-target" => "#UploadPJmodal", "data-toggle" => "modal", :type => "button" }
.col-xs-4.action
Modifier les documents
%br
@ -105,12 +112,12 @@
.col-xs-4
- if gestionnaire_signed_in?
#PJmodal.modal.fade{"aria-labelledby" => "myModalLabel", :role => "dialog", :tabindex => "-1"}
.modal-dialog.modal-lg{:role => "document"}
#PJmodal.modal.fade{ "aria-labelledby" => "myModalLabel", :role => "dialog", :tabindex => "-1" }
.modal-dialog.modal-lg{ :role => "document" }
.modal-content
.modal-header
%button.close{"aria-label" => "Close", "data-dismiss" => "modal", :type => "button"}
%span{"aria-hidden" => "true"} ×
%button.close{ "aria-label" => "Close", "data-dismiss" => "modal", :type => "button" }
%span{ "aria-hidden" => "true" } ×
%h4#myModalLabel.modal-title
Historique des
%span#PJmodal_title
@ -124,7 +131,7 @@
%th
Lien
%thead.tr_content#cerfa
-if @facade.procedure.cerfa_flag?
- if @facade.procedure.cerfa_flag?
- if @facade.dossier.cerfa_available?
- @facade.cerfas_ordered.each do |cerfa|
%tr
@ -133,9 +140,9 @@
%td.col-md-6.col-sm-6.col-xs-6.col-lg-4
= cerfa.created_at
%td.col-md-6.col-sm-6.col-xs-6.col-lg-4
=link_to 'Récupérer', cerfa.content_url, {target: :blank}
= link_to 'Récupérer', cerfa.content_url, { target: :blank }
- @facade.dossier.types_de_piece_justificative.each do |type_de_piece_justificative|
%tbody.tr_content{id: "type_de_pj_#{type_de_piece_justificative.id}"}
%tbody.tr_content{ id: "type_de_pj_#{type_de_piece_justificative.id}" }
- @facade.dossier.retrieve_all_piece_justificative_by_type(type_de_piece_justificative.id).each do |piece_justificative|
%tr
%td.col-md-6.col-sm-6.col-xs-6.col-lg-4
@ -143,15 +150,15 @@
%td.col-md-6.col-sm-6.col-xs-6.col-lg-4
= piece_justificative.created_at
%td.col-md-6.col-sm-6.col-xs-6.col-lg-4
=link_to 'Récupérer', piece_justificative.content_url, {target: :blank}
= link_to 'Récupérer', piece_justificative.content_url, { target: :blank }
.modal-footer
#modalCommentairesDossierParChamp.modal.fade{"tabindex" => -1, "role" => "dialog"}
.modal-dialog{"role" => "document"}
#modalCommentairesDossierParChamp.modal.fade{ "tabindex" => -1, "role" => "dialog" }
.modal-dialog{ "role" => "document" }
.modal-content
.modal-header
%button.close{"data-dismiss" => "modal", "aria-label" => "Fermer"}
%span{"aria-hidden" => true}
%button.close{ "data-dismiss" => "modal", "aria-label" => "Fermer" }
%span{ "aria-hidden" => true }
&times;
.modal-title
Commentaires
@ -159,5 +166,5 @@
%p
Chargement des commentaires en cours...
.modal-footer
%button.btn.btn-primary{"data-dismiss" => "modal"}
%button.btn.btn-primary{ "data-dismiss" => "modal" }
Fermer

View file

@ -2,51 +2,51 @@
%h4
= @facade.entreprise.raison_sociale_or_name
.row.split-row
%div.col-xs-12.split-hr
%div.row
.col-xs-12.split-hr
.row
.col-xs-12
.row
%div.col-xs-4.entreprise-label Siret :
%div.col-xs-8.entreprise-info= @facade.etablissement.siret
.col-xs-4.entreprise-label Siret :
.col-xs-8.entreprise-info= @facade.etablissement.siret
- if @facade.etablissement.siret != @facade.entreprise.siret_siege_social
.row
%div.col-xs-4.entreprise-label SIRET siège social :
%div.col-xs-8.entreprise-info= @facade.entreprise.siret_siege_social
.col-xs-4.entreprise-label SIRET siège social :
.col-xs-8.entreprise-info= @facade.entreprise.siret_siege_social
.row
%div.col-xs-4.entreprise-label Forme juridique :
%div.col-xs-8.entreprise-info= @facade.entreprise.forme_juridique
.col-xs-4.entreprise-label Forme juridique :
.col-xs-8.entreprise-info= @facade.entreprise.forme_juridique
.row
%div.col-xs-4.entreprise-label Libellé naf :
%div.col-xs-8.entreprise-info= @facade.etablissement.libelle_naf
.col-xs-4.entreprise-label Libellé naf :
.col-xs-8.entreprise-info= @facade.etablissement.libelle_naf
.row
%div.col-xs-4.entreprise-label Code naf :
%div.col-xs-8.entreprise-info= @facade.etablissement.naf
.col-xs-4.entreprise-label Code naf :
.col-xs-8.entreprise-info= @facade.etablissement.naf
.row
%div.col-xs-4.entreprise-label Date de création :
%div.col-xs-8.entreprise-info= Time.at(@facade.entreprise.date_creation).strftime "%d-%m-%Y"
.col-xs-4.entreprise-label Date de création :
.col-xs-8.entreprise-info= Time.at(@facade.entreprise.date_creation).strftime "%d-%m-%Y"
.row
%div.col-xs-4.entreprise-label Effectif organisation :
%div.col-xs-8.entreprise-info= @facade.entreprise.effectif
.col-xs-4.entreprise-label Effectif organisation :
.col-xs-8.entreprise-info= @facade.entreprise.effectif
.row
%div.col-xs-4.entreprise-label Code effectif :
%div.col-xs-8.entreprise-info= @facade.entreprise.code_effectif_entreprise
.col-xs-4.entreprise-label Code effectif :
.col-xs-8.entreprise-info= @facade.entreprise.code_effectif_entreprise
.row
%div.col-xs-4.entreprise-label Numéro TVA intracommunautaire :
%div.col-xs-8.entreprise-info= @facade.entreprise.numero_tva_intracommunautaire
.col-xs-4.entreprise-label Numéro TVA intracommunautaire :
.col-xs-8.entreprise-info= @facade.entreprise.numero_tva_intracommunautaire
.row
%div.col-xs-4.entreprise-label Adresse :
%div.col-xs-8.entreprise-info
.col-xs-4.entreprise-label Adresse :
.col-xs-8.entreprise-info
- @facade.etablissement.adresse.split("\n").each do |line|
= line
.row
%div.col-xs-4.entreprise-label Capital social :
%div.col-xs-8.entreprise-info= @facade.entreprise.pretty_capital_social
.col-xs-4.entreprise-label Capital social :
.col-xs-8.entreprise-info= @facade.entreprise.pretty_capital_social
.row
%div.col-xs-4.entreprise-label Exercices :
%div.col-xs-8.entreprise-info
.col-xs-4.entreprise-label Exercices :
.col-xs-8.entreprise-info
- @facade.etablissement.exercices.each_with_index do |exercice, index|
%strong
= "#{exercice.dateFinExercice.year} : "
@ -54,6 +54,6 @@
%br
.row.split-row
%div.col-xs-12.split-hr
.col-xs-12.split-hr
- unless @facade.entreprise.rna_information.nil?
= render partial: '/dossiers/infos_rna'

View file

@ -8,14 +8,14 @@
.col-xs-5
- if @facade.dossier.cerfa_available?
%a{ href: "#{@facade.dossier.cerfa.last.content_url}", target: '_blank' } Consulter
%span{style:'margin-left:12px'}
%span{ style: 'margin-left: 12px;' }
\-
%a.btn.fa.fa-timer{style:'color: black; padding-top: 0',
%a.btn.fa.fa-timer{ style: 'color: black; padding-top: 0;',
"data-target" => "#PJmodal",
"data-toggle" => "modal",
:type => "button",
"data-modal_title" => 'formulaires',
"data-modal_index" => 'cerfa'}
"data-modal_index" => 'cerfa' }
- else
= 'Pièce non fournie'
@ -30,20 +30,20 @@
- if type_de_piece_justificative.api_entreprise
%span.text-success Nous l'avons récupéré pour vous.
- elsif !(@pj = @facade.dossier.retrieve_last_piece_justificative_by_type(type_de_piece_justificative.id)).nil?
-#- if user_signed_in?
-# = 'Pièce fournie'
-#- elsif gestionnaire_signed_in?
-# - if user_signed_in?
-# = 'Pièce fournie'
-# - elsif gestionnaire_signed_in?
%a{ href: "#{@pj.content_url}", target: '_blank' } Consulter
%span{style:'margin-left:12px'}
%span{ style: 'margin-left: 12px;' }
\-
%a.btn.fa.fa-timer{style:'color: black; padding-top: 0',
%a.btn.fa.fa-timer{ style: 'color: black; padding-top: 0;',
"data-target" => "#PJmodal",
"data-toggle" => "modal",
:type => "button",
"data-modal_title" => type_de_piece_justificative.libelle,
"data-modal_index" => "type_de_pj_#{type_de_piece_justificative.id}"}
"data-modal_index" => "type_de_pj_#{type_de_piece_justificative.id}" }
- else
= 'Pièce non fournie'
-#- if gestionnaire_signed_in?
-# - if gestionnaire_signed_in?
= render partial: '/dossiers/modal_historique'

View file

@ -1,6 +1,6 @@
.row{style: 'margin-top: -20px'}
.row{ style: 'margin-top: -20px;' }
.col-xs-12
= form_for @facade.dossier, url: {controller: 'backoffice/private_formulaires', action: :update, dossier_id: @facade.dossier.id}, remote: true do
= render partial: '/users/description/champs', locals:{private: true}
= form_for @facade.dossier, url: { controller: 'backoffice/private_formulaires', action: :update, dossier_id: @facade.dossier.id }, remote: true do
= render partial: '/users/description/champs', locals: { private: true }
.row.center
= submit_tag :Enregistrer, {class: 'btn-action'}
= submit_tag :Enregistrer, { class: 'btn-action' }

View file

@ -14,4 +14,4 @@
.col-xs-3
= form_tag invites_dossier_path(dossier_id: @facade.dossier.id), method: :post, class: 'form-inline' do
= text_field_tag :email, '', class: 'form-control', placeholder: 'Envoyer une invitation'
= submit_tag 'Ajouter', class: 'btn btn-success', id: 'send-invitation', data: {confirm: "Envoyer l'invitation ?"}
= submit_tag 'Ajouter', class: 'btn btn-success', id: 'send-invitation', data: { confirm: "Envoyer l'invitation ?" }

View file

@ -1,4 +1,4 @@
.default_data_block{style:'margin-top: 40px'}
.default_data_block{ style: 'margin-top: 40px;' }
.row.show-block.clearfix#messages
.header
.col-xs-10.title

View file

@ -1,22 +1,22 @@
#pieces_justificatives
%table.table
- if @facade.procedure.cerfa_flag?
%tr{id: "piece_justificative_0"}
%th{class:'col-lg-6'}
='Formulaire'
%tr{ id: "piece_justificative_0" }
%th.col-lg-6
Formulaire
%td.col-lg-6.col-md-6.col-sm-6.col-xs-6
- if @facade.dossier.cerfa_available?
%a{ href: "#{@facade.dossier.cerfa.last.content_url}", target: '_blank' } Consulter
%span{style:'margin-left:12px'}
%span{ style: 'margin-left: 12px;' }
\-
%a.btn.fa.fa-timer{style:'color: black; padding-top: 0',
%a.btn.fa.fa-timer{ style: 'color: black; padding-top: 0;',
"data-target" => "#PJmodal",
"data-toggle" => "modal",
:type => "button",
"data-modal_title" => 'formulaires',
"data-modal_index" => 'cerfa'}
"data-modal_index" => 'cerfa' }
- else
= 'Pièce non fournie'
Pièce non fournie
- @facade.dossier.types_de_piece_justificative.order('order_place ASC').each do |type_de_piece_justificative|
%tr{ id: "piece_justificative_#{type_de_piece_justificative.id}" }
@ -26,20 +26,20 @@
- if type_de_piece_justificative.api_entreprise
%span.text-success Nous l'avons récupéré pour vous.
- elsif !(@pj = @facade.dossier.retrieve_last_piece_justificative_by_type(type_de_piece_justificative.id)).nil?
-#- if user_signed_in?
-# = 'Pièce fournie'
-#- elsif gestionnaire_signed_in?
-# - if user_signed_in?
-# = 'Pièce fournie'
-# - elsif gestionnaire_signed_in?
%a{ href: "#{@pj.content_url}", target: '_blank' } Consulter
%span{style:'margin-left:12px'}
%span{ style: 'margin-left: 12px;' }
\-
%a.btn.fa.fa-timer{style:'color: black; padding-top: 0',
%a.btn.fa.fa-timer{ style: 'color: black; padding-top: 0;',
"data-target" => "#PJmodal",
"data-toggle" => "modal",
:type => "button",
"data-modal_title" => type_de_piece_justificative.libelle,
"data-modal_index" => "type_de_pj_#{type_de_piece_justificative.id}"}
"data-modal_index" => "type_de_pj_#{type_de_piece_justificative.id}" }
- else
= 'Pièce non fournie'
-#- if gestionnaire_signed_in?
=render partial: '/dossiers/modal_historique'
-# - if gestionnaire_signed_in?
= render partial: '/dossiers/modal_historique'

View file

@ -6,9 +6,9 @@
.row.etape.etape_2
= render partial: '/dossiers/etapes/etape2'
-#- if @facade.procedure.module_api_carto.use_api_carto?
-# .row.etape.etape_3
-# = render partial: '/dossiers/etapes/etape3'
-# - if @facade.procedure.module_api_carto.use_api_carto?
-# .row.etape.etape_3
-# = render partial: '/dossiers/etapes/etape3'
-#
-#.row.etape.etape_4
-# = render partial: '/dossiers/etapes/etape4'
-# .row.etape.etape_4
-# = render partial: '/dossiers/etapes/etape4'

View file

@ -1,4 +1,4 @@
%div.commentaire
.commentaire
.comment-header
= commentaire.header
.content

View file

@ -1,11 +1,10 @@
= form_tag(url_for({ controller: 'commentaires', action: :create, dossier_id: dossier_facade.dossier.id, champ_id: dossier_facade.champ_id }), class: 'form-inline', method: 'POST', multipart: true) do
%textarea.form-control{id: 'texte_commentaire', class: 'wysihtml5', name: 'texte_commentaire', style: 'width: 100%; margin-bottom:2%', rows: '5', placeholder:"Commentaire"}
%textarea.form-control.wysihtml5{ id: 'texte_commentaire', name: 'texte_commentaire', style: 'width: 100%; margin-bottom: 2%;', rows: '5', placeholder: "Commentaire" }
.row
.col-md-6
%h4.text-primary{style: 'margin-top: 0px'} Ajouter un fichier
= file_field_tag "piece_justificative[content]", accept: PieceJustificative.accept_format, style: 'float: left; margin-left: 20px'
%h4.text-primary{ style: 'margin-top: 0px;' } Ajouter un fichier
= file_field_tag "piece_justificative[content]", accept: PieceJustificative.accept_format, style: 'float: left; margin-left: 20px;'
.col-md-6.text-right
%input#save-message.form-control.btn.btn-danger{ type: 'submit', value: 'ENVOYER' }

View file

@ -1,13 +1,13 @@
.col-xs-3.center
%h3 Ma procédure
#logos.center{class: (@facade.entreprise.nil? ? '' : 'mask')}
#logos.center{ class: (@facade.entreprise.nil? ? '' : 'mask') }
- if @facade.procedure.euro_flag
#euro_flag.flag
=image_tag('drapeau_europe.png')
= image_tag('drapeau_europe.png')
#logo_procedure.flag
=image_tag( @facade.procedure.decorate.logo_img )
= image_tag( @facade.procedure.decorate.logo_img )
.etape.etapes_informations.col-xs-9
.row
@ -15,10 +15,10 @@
%h2#titre_procedure.text-info
= @facade.procedure.libelle
%p#description_procedure{style:'width: 95%;', class: (@facade.entreprise.nil? ? '' : 'mask')}
%p#description_procedure{ style: 'width: 95%;', class: (@facade.entreprise.nil? ? '' : 'mask') }
= h @facade.procedure.description.html_safe
- unless @facade.procedure.lien_site_web.blank?
.center
%a{href: "#{@facade.procedure.lien_site_web.html_safe}", target: '_blank'}
%a{ href: "#{@facade.procedure.lien_site_web.html_safe}", target: '_blank' }
En savoir plus ...

View file

@ -1,4 +1,4 @@
- if @facade.procedure.for_individual?
= render partial: 'dossiers/etapes/etape_2/individual'
= render partial: 'dossiers/etapes/etape_2/individual'
- else
= render partial: 'dossiers/etapes/etape_2/entreprise'

View file

@ -3,7 +3,7 @@
Mes informations
%br
- unless @facade.entreprise.nil?
.center{style:'margin-left: -5%'}
.center{ style: 'margin-left: -5%;' }
Vous êtes authentifié avec le SIRET
%h3.text-success
@ -15,8 +15,8 @@
.etape.etapes_informations.col-xs-9
.row
- if @facade.entreprise.nil?
#new_siret{style:'margin-left: 20%; margin-top: 5%'}
= form_for @facade.dossier, html: {class: 'form-inline'}, url: users_dossier_siret_informations_path(dossier_id: @facade.dossier.id), method: :post, remote: true do |f|
#new_siret{ style: 'margin-left: 20%; margin-top: 5%;' }
= form_for @facade.dossier, html: { class: 'form-inline' }, url: users_dossier_siret_informations_path(dossier_id: @facade.dossier.id), method: :post, remote: true do |f|
.form-group.form-group-lg
= f.text_field :siret, class: "form-control", placeholder: "Entrez votre Siret", value: @siret
= f.hidden_field :dossier_id, value: @facade.dossier.id
@ -26,15 +26,15 @@
#recap_info_entreprise
= render partial: '/dossiers/infos_entreprise'
%p#insee_infogreffe{style:'color:grey; float:right'}
%p#insee_infogreffe{ style: 'color: grey; float: right;' }
%i
Informations récupérées auprès de l'INSEE et d'INFOGREFFE
%br
= form_for @facade.dossier, url: { controller: '/users/dossiers', action: :update } do |f|
= f.hidden_field :id
%label{ style:'font-weight:normal' }
%label{ style: 'font-weight: normal;' }
= f.check_box :autorisation_donnees
J'autorise les décideurs publics à vérifier les informations de mon organisation auprès des administrations concernées. Ces informations resteront strictement confidentielles.
%br
= f.submit 'Etape suivante', class: "btn btn btn-info", style: 'float:right', id: 'etape_suivante', disabled: :disabled
= f.submit 'Etape suivante', class: "btn btn btn-info", style: 'float: right;', id: 'etape_suivante', disabled: :disabled

View file

@ -21,24 +21,24 @@
%label
%h4
Nom *
= ff.text_field :nom, {class: 'form-control'}
= ff.text_field :nom, { class: 'form-control', required: true }
.form-group
%label
%h4
Prénom *
= ff.text_field :prenom, {class: 'form-control'}
= ff.text_field :prenom, { class: 'form-control', required: true }
.form-group
%label
%h4
Date de naissance *
= ff.date_field :birthdate, {class: 'form-control', placeholder: 'jj/mm/aaaa'}
= ff.date_field :birthdate, { class: 'form-control', placeholder: 'jj/mm/aaaa', required: true }
%p
%label{ style:'font-weight:normal' }
%label{ style: 'font-weight: normal;' }
= f.check_box :autorisation_donnees
= "&nbsp;".html_safe
Vos informations personnelles ne seront jamais utilisées dans un but lucratif ou commercial. Elles ne pourront être communiquées à de tiers personnes sans votre accord préalable. Elles pourront en revanche être communiquées aux administrations compétentes afin d'instruire votre dossier, conformément à la déclaration CNIL effectué par le service TPS.
=link_to 'en savoir plus', cgu_path, target: '_blank'
= link_to 'en savoir plus', cgu_path, target: '_blank'
.row
.col-xs-5.col-xs-5
.col-xs-2.col-xs-2

View file

@ -1,9 +1,9 @@
%h2.text-info
= image_tag('logo_FC_02_small.png', style: 'height: 55px')
= image_tag('logo_FC_02_small.png', style: 'height: 55px;')
&nbsp;France Connect - Particulier
%h3 Nouvelle connexion
%h4.text-warning{style:'margin-left: 20px'} Email déjà utilisé
%h4.text-warning{ style: 'margin-left: 20px;' } Email déjà utilisé
%br
%p
@ -13,11 +13,11 @@
%br
.center
#france_connect_particulier_email
= form_for @user, url: {controller: 'france_connect/particulier', action: :check_email}, method: :post do |f|
= form_for @user, url: { controller: 'france_connect/particulier', action: :check_email }, method: :post do |f|
.form-group.form-group-lg
= f.text_field :email_france_connect, class: "form-control", readonly: 'readonly'
%br
= f.password_field :password, class: "form-control", placeholder: "Entrez votre mot de passe"
= hidden_field_tag :fci_id, params[:fci_id]
= hidden_field_tag :salt, params[:salt]
= f.submit 'Terminer', class: %w(btn btn-lg btn-success), style: 'margin-top:20px;', id: 'valid_new_fcp'
= f.submit 'Terminer', class: %w(btn btn-lg btn-success), style: 'margin-top: 20px;', id: 'valid_new_fcp'

View file

@ -1,5 +1,5 @@
%h2.text-info
= image_tag('logo_FC_02_small.png', style: 'height: 55px')
= image_tag('logo_FC_02_small.png', style: 'height: 55px;')
&nbsp;France Connect - Particulier
%h3 Nouvelle connexion
@ -24,9 +24,9 @@
.center
#france_connect_particulier_email
= form_for @user, url: {controller: 'france_connect/particulier', action: :check_email}, method: :post do |f|
= form_for @user, url: { controller: 'france_connect/particulier', action: :check_email }, method: :post do |f|
.form-group.form-group-lg
= f.text_field :email_france_connect, class: "form-control", placeholder: "Entrez votre email"
= hidden_field_tag :fci_id, params[:fci_id]
= hidden_field_tag :salt, params[:salt]
= f.submit 'Terminer', class: %w(btn btn-lg btn-success), style: 'margin-top:20px;', id: 'valid_new_fcp'
= f.submit 'Terminer', class: %w(btn btn-lg btn-success), style: 'margin-top: 20px;', id: 'valid_new_fcp'

View file

@ -27,5 +27,5 @@
%br
%br
.actions
= f.submit "Changer", class:'btn btn-primary'
= f.submit "Changer", class: 'btn btn-primary'
%br

View file

@ -19,5 +19,5 @@
%br
%br
.actions
= f.submit "Renvoyer", class:'btn btn-primary'
= f.submit "Renvoyer", class: 'btn btn-primary'
%br

View file

@ -24,6 +24,6 @@
%br
%br
.actions
= f.submit "Se connecter", class:'btn btn-primary'
= f.submit "Se connecter", class: 'btn btn-primary'
%br
= render "gestionnaires/shared/links"

View file

@ -1,4 +1,4 @@
%div.dropdown-menu#credentials
%div.description= t("utils.deconnexion")
.dropdown-menu#credentials
.description= t("utils.deconnexion")
= @current_gestionnaire.email if @current_gestionnaire
= @current_user.email if @current_user

View file

@ -1 +1 @@
= submit_tag 'Etape suivante', class: %w(btn btn btn-info), style: 'float:right', id: 'etape_suivante', data: { disable_with: 'Etape suivante', submit: true}
= submit_tag 'Etape suivante', class: %w(btn btn btn-info), style: 'float: right;', id: 'etape_suivante', data: { disable_with: 'Etape suivante', submit: true }

View file

@ -1,10 +1,12 @@
%div#footer
%p{class: "copyright col-md-push-#{12-main_container_size} col-md-#{main_container_size} col-lg-push-#{12-main_container_size} col-lg-#{main_container_size} text-muted small"}
%p{ class: "copyright col-md-push-#{12-main_container_size} col-md-#{main_container_size} col-lg-push-#{12-main_container_size} col-lg-#{main_container_size} text-muted small" }
= link_to 'SGMAP', "http://etatplateforme.modernisation.gouv.fr"
= Time.now.year
\-
= link_to 'Nouveautés', 'https://github.com/sgmap/tps/releases', target: '_blank'
\-
= link_to 'Statistiques', stats_path
\-
= link_to 'CGU / Mentions légales', cgu_path
\-
= link_to 'Contact', "mailto:"+t('dynamics.contact_email')

View file

@ -1,8 +1,8 @@
="<!--[if lt IE 10]>".html_safe
= "<!--[if lt IE 10]>".html_safe
%div.center{style:'width: 100%; background-color: white; position: fixed; top:0; left:0; z-index: 100000'}
.center{ style: 'width: 100%; background-color: white; position: fixed; top: 0; left: 0; z-index: 100000;' }
%h3.text-danger
%b
Votre version d'Internet Explorer est trop ancienne pour être utilisée sur le service TPS. Version minimum : Internet Explorer 10
="<![endif]-->".html_safe
= "<![endif]-->".html_safe

View file

@ -1,3 +1,3 @@
%div{style: 'float:right'}
%a.btn{href: "/users/dossiers/#{@dossier.id}/recapitulatif"} Retour
= submit_tag 'Modification terminée', class: %w(btn btn btn-info), id: 'modification_terminee', data: { disable_with: 'Modification terminée', submit: true}
%div{ style: 'float: right;' }
%a.btn{ href: "/users/dossiers/#{@dossier.id}/recapitulatif" } Retour
= submit_tag 'Modification terminée', class: %w(btn btn btn-info), id: 'modification_terminee', data: { disable_with: 'Modification terminée', submit: true }

View file

@ -1,5 +1,5 @@
.col-xs-2
%a#title_navbar{href: '/'}
%a#title_navbar{ href: '/' }
.row#home
.col-lg-6.no-padding
= image_tag('marianne_small.png', class: 'logo')
@ -9,9 +9,9 @@
.col-xs-10.no-padding
#navbar-body
.row
-begin
- begin
= render partial: @navbar_url
-rescue
- rescue
= render partial: 'layouts/navbars/navbar_default'
= render partial: 'layouts/navbars/navbar_log_options'

View file

@ -5,5 +5,5 @@
= BROWSER.value.version
\-
Attention, votre navigateur n'est pas recommandé pour la navigation sur ce site internet. Aucun support ne pourra vous être prodigué en cas de dysfonctionnement.
%a{href: '/cgu/#navigateurs'}
%a{ href: '/cgu/#navigateurs' }
Voir la liste des navigateurs compatibles.

View file

@ -1,6 +1,6 @@
- if SwitchDeviseProfileService.new(warden).multiple_devise_profile_connect?
#switch_menu.dropdown.dropup
%button.btn.btn-default.dropdown-toggle{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false}
%button.btn.btn-default.dropdown-toggle{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false }
%i.fa.fa-toggle-on
%span.caret
%ul.dropdown-menu.dropdown-menu-left

View file

@ -1,10 +1,10 @@
%html
%head
%meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/
%meta{ :content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type" }/
%meta{ name: "turbolinks-cache-control", content: "no-cache" }
%title
=t('dynamics.page_title')
%meta{'http-equiv' => "X-UA-Compatible", :content => "IE=edge"}
= t('dynamics.page_title')
%meta{ 'http-equiv' => "X-UA-Compatible", :content => "IE=edge" }
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true
= stylesheet_link_tag 'print', media: 'print', 'data-turbolinks-track' => true
@ -14,14 +14,14 @@
= action_cable_meta_tag
%body
= render partial: 'layouts/support_navigator_banner'
#beta{class:(Rails.env == 'production' ? '' : 'beta_staging')}
#beta{ class: (Rails.env == 'production' ? '' : 'beta_staging') }
- if Rails.env == 'production'
Beta
- else
Env Test
- if Rails.env == 'test'
%script{type: 'text/javascript'}
%script{ type: 'text/javascript' }
(typeof jQuery !== 'undefined') && (jQuery.fx.off = true);
@ -29,12 +29,12 @@
%div#wrap
%div.row
.row
%div#header.navbar
= render partial: "layouts/navbar"
%div.row.no-margin
.row.no-margin
- if RenderPartialService.left_panel_exist? @left_pannel_url
%div.col-xs-2#left-panel
.col-xs-2#left-panel
- if gestionnaire_signed_in?
#search-block
= render partial: 'layouts/left_panels/search_area'
@ -44,13 +44,13 @@
- else
- main_container_size = 12
=render partial: 'layouts/main_container', locals: {main_container_size: main_container_size}
= render partial: 'layouts/main_container', locals: { main_container_size: main_container_size }
#mask_search
%h1
%i.fa.fa-times{style:'position: fixed; top: 10; right: 30; color: white;'}
%i.fa.fa-times{ style: 'position: fixed; top: 10; right: 30; color: white;' }
= render partial: 'layouts/switch_devise_profile_module'
= render partial: 'layouts/notifications_alert'
= render partial: 'layouts/footer', locals: {main_container_size: main_container_size}
= render partial: 'layouts/footer', locals: { main_container_size: main_container_size }
= render partial: 'layouts/google_analytics'

View file

@ -1 +1 @@
= render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_navbar', locals: {active: 'Accompagnateurs'}
= render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_navbar', locals: { active: 'Accompagnateurs' }

View file

@ -1 +1 @@
= render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_navbar', locals: {active: 'E-mails'}
= render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_navbar', locals: { active: 'E-mails' }

View file

@ -1 +1 @@
= render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_navbar', locals: {active: 'E-mails'}
= render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_navbar', locals: { active: 'E-mails' }

View file

@ -1 +1 @@
= render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_navbar', locals: {active: 'Pieces'}
= render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_navbar', locals: { active: 'Pieces' }

View file

@ -1 +1 @@
= render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_navbar', locals: {active: 'Prévisualisation'}
= render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_navbar', locals: { active: 'Prévisualisation' }

View file

@ -1 +1 @@
=render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_index'
= render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_index'

View file

@ -1 +1 @@
=render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_index'
= render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_index'

View file

@ -1 +1 @@
= render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_navbar', locals: {active: 'Description'}
= render partial: 'layouts/left_panels/left_panel_admin_procedurescontroller_navbar', locals: { active: 'Description' }

View file

@ -1,5 +1,5 @@
%div#first-block
%div.en-cours
.en-cours
%b
= dossier_count = current_administrateur.procedures.count
= ("Procedures".pluralize(dossier_count)).upcase
@ -7,27 +7,27 @@
%div#action-block
%div#menu-block
%div.split-hr-left
.split-hr-left
#procedure_list
%a{:href => "#{url_for :admin_procedures_draft}", id: "draft-procedures"}
%div.procedure_list_element{class: @draft_class}
= "Brouillons"
%a{ :href => "#{url_for :admin_procedures_draft}", id: "draft-procedures" }
.procedure_list_element{ class: @draft_class }
Brouillons
.badge.progress-bar-default
= current_administrateur.procedures.where(published: false, archived: false).count
%a{:href => "#{url_for :admin_procedures}", id: "active-procedures"}
%div.procedure_list_element{class: @active_class}
= "Actives"
%a{ :href => "#{url_for :admin_procedures}", id: "active-procedures" }
.procedure_list_element{ class: @active_class }
Actives
.badge.progress-bar-success
= current_administrateur.procedures.where(published: true, archived: false).count
%a{:href => "#{url_for :admin_procedures_archived}", id: "archived-procedures"}
%div.procedure_list_element{class: @archived_class}
="Archivées"
%a{ :href => "#{url_for :admin_procedures_archived}", id: "archived-procedures" }
.procedure_list_element{ class: @archived_class }
Archivées
.badge.progress-bar-purple
= current_administrateur.procedures.where(archived: true).count
%div.split-hr-left
.split-hr-left
%div#infos-block

View file

@ -1,51 +1,51 @@
%div#first-block
%div.en-cours
-unless @procedure.logo.blank?
= image_tag @procedure.decorate.logo_img, style: 'width: 30px'
.en-cours
- unless @procedure.logo.blank?
= image_tag @procedure.decorate.logo_img, style: 'width: 30px;'
%b
=@procedure.libelle
= @procedure.libelle
%div#action-block
%div#menu-block
%div.split-hr-left
.split-hr-left
#procedure_list
%a{:href => "#{url_for admin_procedure_path(@procedure)}", id: 'onglet-infos'}
%div.procedure_list_element{class: ('active' if active == 'Informations')}
%a{ :href => "#{url_for admin_procedure_path(@procedure)}", id: 'onglet-infos' }
.procedure_list_element{ class: ('active' if active == 'Informations') }
Informations
%a{:href => "#{url_for admin_procedure_accompagnateurs_path(@procedure)}", id: 'onglet-accompagnateurs'}
%div.procedure_list_element{class: ('active' if active == 'Accompagnateurs')}
=t('dynamics.admin.procedure.onglets.accompagnateurs')
%a{ :href => "#{url_for admin_procedure_accompagnateurs_path(@procedure)}", id: 'onglet-accompagnateurs' }
.procedure_list_element{ class: ('active' if active == 'Accompagnateurs') }
= t('dynamics.admin.procedure.onglets.accompagnateurs')
%a{:href => "#{url_for edit_admin_procedure_path(@procedure)}", id: 'onglet-description'}
%div.procedure_list_element{class: ('active' if active == 'Description')}
%a{ :href => "#{url_for edit_admin_procedure_path(@procedure)}", id: 'onglet-description' }
.procedure_list_element{ class: ('active' if active == 'Description') }
Description
- unless @procedure.locked?
%a{:href => "#{url_for admin_procedure_types_de_champ_path(@procedure)}", id: 'onglet-champs'}
%div.procedure_list_element{class: ('active' if active == 'Champs')}
%a{ :href => "#{url_for admin_procedure_types_de_champ_path(@procedure)}", id: 'onglet-champs' }
.procedure_list_element{ class: ('active' if active == 'Champs') }
Champs
- unless @procedure.locked?
%a{:href => "#{url_for admin_procedure_pieces_justificatives_path(@procedure)}", id: 'onglet-pieces'}
%div.procedure_list_element{class: ('active' if active == 'Pieces')}
%a{ :href => "#{url_for admin_procedure_pieces_justificatives_path(@procedure)}", id: 'onglet-pieces' }
.procedure_list_element{ class: ('active' if active == 'Pieces') }
Pièces jointes
- unless @procedure.locked?
%a{:href => "#{url_for admin_procedure_types_de_champ_private_path(@procedure)}", id: 'onglet-private-champs'}
%div.procedure_list_element{class: ('active' if active == 'Champs privés')}
%a{ :href => "#{url_for admin_procedure_types_de_champ_private_path(@procedure)}", id: 'onglet-private-champs' }
.procedure_list_element{ class: ('active' if active == 'Champs privés') }
Champs privés
%a{:href => "#{url_for admin_procedure_mail_templates_path(@procedure)}", id: 'onglet-inemailsfos'}
%div.procedure_list_element{class: ('active' if active == 'E-mails')}
%a{ :href => "#{url_for admin_procedure_mail_templates_path(@procedure)}", id: 'onglet-inemailsfos' }
.procedure_list_element{ class: ('active' if active == 'E-mails') }
E-mails
%a{:href => "#{url_for admin_procedure_previsualisation_path(@procedure)}", id: 'onglet-preview'}
%div.procedure_list_element{class: ('active' if active == 'Prévisualisation')}
%a{ :href => "#{url_for admin_procedure_previsualisation_path(@procedure)}", id: 'onglet-preview' }
.procedure_list_element{ class: ('active' if active == 'Prévisualisation') }
Prévisualisation
%div.split-hr-left
.split-hr-left
%div#infos-block

Some files were not shown because too many files have changed in this diff Show more