I have many php files full of html markup. I would like to extract all the strings (html node content and attribute values), to generate a text document to review then send for translation.
I'm wondering, is there a reliable way (a tool or a script perhaps) that would do that automatically?
Example code i have:
<div class="row">
<div class="medium-11 columns medium-centered">
<p style="font-weight:bold;">Bienvenue sur votre compte, vous permettant
de répondre aux offres d'emploi. Tenez à jour vos données
personnelles et vos documents officiels tels que CV, diplôme ou
permis de conduire, et retrouvez l'historique des offres auxquelles
vous aviez postulé.</p>
</div>
</div>
<dl class="tabs" data-tab="">
<dd class="active">
<i class="fi-torso"></i> Votre profil
</dd>
<dd>
<i class="fi-bookmark"></i> Formation
</dd>
<dd>
<i class="fi-shuffle"></i> Expérience
</dd>
<dd>
<i class="fi-paperclip"></i> Documents
</dd>
<dd>
<i class="fi-foundation"></i> Historique
</dd>
</dl>
<input type="hidden" name="user_id" value="USERID">
<input type="radio" name="sexe" value="2" id="Monsieur" title="veuillez indiquer votre genre">
What i would like to extract:
Bienvenue sur votre compte, vous permettant de répondre aux offres d'emploi. Tenez à jour vos données personnelles et vos documents officiels tels que CV, diplôme ou permis de conduire, et retrouvez l'historique des offres auxquelles vous aviez postulé.
Votre profil
Formation
Expérience
Documents
Historique
veuillez indiquer votre genre
To remove all the tags in the HTML, you can use strip_tags():
$text_only = strip_tags($html_codes);
For document generation part, it depends what kind of document you want to generate.
Related
I'm new to Laravel and I'm facing a (I suppose) common problem, but couldn't find this specific scenario in the documentation:
I'm building a two language website and I'm filling HTML from a file in my langs folder.
So I want to know how to make a proper for loop inside this code:
<div class="carousel-item active">
<div class="carousel-container">
<h2 class="animate__animated animate__fadeInDown">Bem-vindo ao <span>SysSite!</span></h2>
<p class="animate__animated animate__fadeInUp">{!! __('pages/index.carrossel1') !!}</p>
Read sd
</div>
</div>
<!-- Slide 2 -->
<div class="carousel-item">
<div class="carousel-container">
<h2 class="animate__animated animate__fadeInDown">Conecte-se e divulgue suas ideias!</h2>
<p class="animate__animated animate__fadeInUp">Crie postagens, comente, intereja e o mais importante: <br />evolua seu conhecimento sobre suas tecnologias favoritas!</p>
Read More
</div>
</div>
<!-- Slide 3 -->
<div class="carousel-item">
<div class="carousel-container">
<h2 class="animate__animated animate__fadeInDown">Sequi ea ut et est quaerat</h2>
<p class="animate__animated animate__fadeInUp">Ut velit est quam dolor ad a aliquid qui aliquid. Sequi ea ut et est quaerat sequi nihil ut aliquam. Occaecati alias dolorem mollitia ut. Similique ea voluptatem. Esse doloremque accusamus repellendus deleniti vel. Minus et tempore modi architecto.</p>
Read More
</div>
</div>
My index.php file, in the langs folder:
<?php
return [
'carrossel1' => 'Mantenha-se por dentro de tudo que rola no mundo da tecnologia! <br />Atualizações diárias para te manter antenado.'
];
So, my question is: for the time I don't have the text for every div, but when I do, how can I make it dynamically filled, with a for loop and my array in index.text?
Thanks in advance.
Refer Localization by laravel as its standard and easy to use.
as you can create a new folder within the lang file so you can get as following
in the lang.php
<?php
return [
'carrossel1'=> 'Mantenha-se por dentro de tudo que rola no mundo da tecnologia! <br />Atualizações diárias para te manter antenado.'
]
?>
and you can easily access it as
{!! __('lang.carrossel1') !!}
You can two ways .Given an simple example below
$carousel=[
[
'key'=>'carrossel1'
]
[
'key'=>'carrossel2'
],
[
'key'=>'carrossel3'
]
];
#foreach($carousel as $key=>$value)
#lang('index.'.$value['key']) or {!! __('index.'.$value['key']) !!}
#endforeach
or
#foreach($carousel as $key=>$value)
{{\Illuminate\Support\Facades\Lang::get('index')[$value['key']]}}
#endforeach
The users can create projects with a form on a pop-up using ajax. They use Chrome to get to the tool.
The problem is that some times when they create a new project, the form saves the information of a former project, so they loose the new project's data.
Does someone already have this issue and know how to fix it ? Is it a problem with the browser's cache ?
Thank you for your help !
EDIT this is my code
Twig view
<!-- Formulaire de création d'un nouveau projet -->
{{ form_start(form, { 'attr': {'class': 'form-horizontal'} }) }}
{{ form_start(formGroupe, { 'attr': {'class': 'form-horizontal'} }) }}
<div class="row">
<div class="col-sm-offset-1 sous-titre-cartouche cartouche-1">
<p>Le groupe de projets</p>
<hr>
</div>
</div>
<br>
<!-- Choix du groupe -->
<div class="row">
<div class="col-sm-offset-1">
<label for="choixGroupe"><img src="{{ asset('picto/commercial/1-1.png') }}" class="picto-number"> Ce projet fait-il partie d'un groupe de projets ? <span class="required">*</span></label>
<input type="radio" name="choixGroupe" id="radioOui" value="1" {% if projet is defined and projet.groupe != null %}checked{% endif %}>
<label for="radioOui" class="required">Oui</label>
<input type="radio" name="choixGroupe" id="radioNon" value="0" {% if projet is not defined or (projet is defined and projet.groupe == null) %}checked{% endif %}>
<label for="radioNon" class="required">Non</label>
</div>
</div>
<br>
<!-- Choix du groupe2 -->
<div class="row group-choixGroupe2">
<div class="col-sm-offset-1">
<label for="choixGroupe2"><img src="{{ asset('picto/commercial/1-2.png') }}" class="picto-number"> Voulez-vous choisir un groupe de projets déjà existant ? <span class="required">*</span></label>
<input type="radio" name="choixGroupe2" id="radioOui2" value="1" {% if choixGroupe is defined and choixGroupe == '1' %}checked{% endif %}>
<label for="radioOui2" class="required">Oui</label>
<input type="radio" name="choixGroupe2" id="radioNon2" value="0" {% if choixGroupe is defined and choixGroupe == '0' %}checked{% endif %}>
<label for="radioNon2" class="required">Non</label>
</div>
</div>
<br class="group-existant">
<!-- Groupe existant -->
<div class="row group-existant">
<div class="col-sm-offset-1">
<label for="groupeExistant"><img src="{{ asset('picto/commercial/1-3.png') }}" class="picto-number"> Sélectionner le groupe de projets existant : <span class="required">*</span></label>
{{ form_widget(formGroupe.groupeExistant) }}
</div>
</div>
<br class="group-nouveau">
<!-- Nouveau groupe -->
<div class="row group-nouveau">
<div class="col-sm-offset-1">
<label for="groupeNom"><img src="{{ asset('picto/commercial/1-3.png') }}" class="picto-number"> Créer un nouveau groupe de projets : <span class="required">*</span></label>
{{ form_widget(formGroupe.objet, { 'attr': {'placeholder': 'Champ à définir'} }) }}
</div>
</div>
<br>
<!-- Groupe description -->
<div class="row group-description">
<div class="col-sm-offset-1">
<label for="groupeDescription"><img src="{{ asset('picto/commercial/1-4.png') }}" class="picto-number"> Description du groupe de projets : <span class="required">*</span></label>
<br>
<br>
<textarea name="groupeDescription" class="description">{% if projet is defined and projet.groupe != null %}{{ projet.groupe.description }}{% endif %}</textarea>
</div>
</div>
<br>
<div class="row">
<div class="col-sm-offset-1 sous-titre-cartouche cartouche-2">
<p>Le client</p>
<hr>
</div>
</div>
<br>
<div class="row">
<div class="col-sm-offset-1">
<label for="groupe_client"><img src="{{ asset('picto/commercial/2-1.png') }}" class="picto-number"> Sélectionner les champs suivants : <span class="required">*</span></label>
</div>
</div>
<br>
<div class="row">
<!-- Groupe -->
<div class="col-sm-offset-1 projet-client">
{{ form_widget(form.client, { 'attr': {'class': 'col-sm-2'} }) }}
<input type="hidden" name="creationProjet[client]" id="hiddenClient" disabled>
</div>
<!-- Filiale -->
<div class="projet-filiale">
{{ form_widget(form.filiale, { 'attr': {'class': 'col-sm-offset-1 col-sm-2'} }) }}
<input type="hidden" name="creationProjet[filiale]" id="hiddenFiliale" disabled>
</div>
<!-- Contact -->
<div class="projet-contact">
{{ form_widget(form.contact, { 'attr': {'class': 'col-sm-offset-1 col-sm-2'} }) }}
<input type="hidden" name="creationProjet[contact]" id="hiddenContact" disabled>
</div>
</div>
<br>
<div class="row">
<div class="col-sm-offset-1 sous-titre-cartouche cartouche-3">
<p>Le projet</p>
<hr>
</div>
</div>
<br>
<div class="row">
<!-- Expertise -->
<div class="col-sm-offset-1 col-sm-5 col-expertise">
<label for="expertise"><img src="{{ asset('picto/commercial/3-1.png') }}" class="picto-number"> Sélectionner le type d'expertise : <span class="required">*</span></label>
<br>
<br>
{{ form_widget(form.expertise, { 'attr': {'class': 'col-sm-5'} }) }}
</div>
<!-- Objet -->
<div class="col-sm-5">
<label for="objet"><img src="{{ asset('picto/commercial/3-4.png') }}" class="picto-number"> Remplir l'intitulé et la description du projet : <span class="required">*</span></label>
<br>
<br>
{{ form_widget(form.objet, { 'attr': {'placeholder': 'Champ à remplir' , 'class': 'col-sm-11'} }) }}
</div>
</div>
<br>
<div class="row">
<div class="col-sm-offset-1 col-sm-5">
<!-- Impression -->
<div class="row group-impression">
<label for="impression"><img src="{{ asset('picto/commercial/3-2.png') }}" class="picto-number"> Ce projet est-il imprimé ? <span class="required">*</span> </label>
{{ form_widget(form.impression) }}
</div>
<br>
<div class="row datesProjet">
<label for="dates"><img src="{{ asset('picto/commercial/3-3.png') }}" class="picto-number"> Choisir les dates de début et de fin : <span class="required">*</span> </label>
<br>
<br>
<!-- Date de début -->
<div class="col-sm-6 group-dateDebut">
<label for="dateDebut">Date de début : </label>
{{ form_widget(form.dateDebut) }}
</div>
<!-- Date de fin -->
<div class="col-sm-6 group-dateFin">
<label for="dateFin">Date de fin : <span class="required">*</span></label>
{{ form_widget(form.dateFin) }}
</div>
</div>
<br>
<div class="row datesImpression">
<!-- Date de mise en impression -->
<div class="col-sm-6">
<label for="dateImpression">Date de mise en impression : </label>
{{ form_widget(form.dateImpression) }}
</div>
</div>
</div>
<!-- Description -->
<div class="col-sm-5">
<textarea name="projetDescription" class="description">{% if projet is defined %}{{ projet.description }}{% endif %}</textarea>
</div>
</div>
<br>
<!-- Message d'erreur -->
<div class="row">
<div class="col-sm-offset-1 col-sm-10">
<span class="error date-erreur"></span>
</div>
</div>
<br>
<div class="row">
<div class="col-sm-offset-1 col-sm-10 hr-footer">
<hr>
</div>
</div>
<br>
<!-- Bouton Enregistrer ou Modifier -->
<div class="row">
<div class="col-sm-offset-8 col-sm-1">
<span class="glyphicon glyphicon-repeat spinner noactive"></span>
</div>
<div class="col-sm-2">
{{ form_widget(form._token) }}
{{ form_widget(formGroupe._token) }}
{% if projet is defined %}
<input type="submit" class="modifier-submit">
{% else %}
<input type="submit" class="creer-submit cursor">
{% endif %}
</div>
</div>
{{ form_end(formGroupe) }}
{{ form_end(form) }}
Controller
/**
* Action pour le formulaire de création d'un projet
*/
public function indexAction()
{
$request = $this->getRequest();
$em = $this->getDoctrine()->getManager();
/* On crée un nouveau projet */
$projet = new Projet();
/* On crée un nouveau groupe */
$groupe = new Groupe();
/* On récupère le formulaire */
$form = $this->createForm(new CreationProjetType($this->getDoctrine()->getManager()), $projet);
$formGroupe = $this->createForm(new CreationGroupeType());
/* On redirige vers le formulaire de création du projet */
return $this->render('CommercialBundle:CreationProjet:index.html.twig',
array('utilisateur' => $this->getUser() ,
'form' => $form->createView() ,
'formGroupe' => $formGroupe->createView() ));
}
/**
* Action pour la création d'un projet + Modification d'un projet
*/
public function creerAjaxAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$manager = new Manager($em);
/* On crée un nouveau projet */
$projet = new Projet();
/* On crée un nouveau groupe */
$groupe = new Groupe();
/* On récupère le groupe du projet */
$choixGroupe = $request->request->get('choixGroupe');
$choixGroupe2 = $request->request->get('choixGroupe2');
$groupeDescription = $request->request->get('groupeDescription');
/* On récupère les formulaires */
$form = $this->createForm(new CreationProjetType($this->getDoctrine()->getManager()), $projet);
$formGroupe = $this->createForm(new CreationGroupeType());
if($request->isXmlHttpRequest()) {
$form->bind($request);
$formGroupe->bind($request);
if($form->isValid()) {
/* On récupère les données du formulaire */
$dataProjet = $this->getRequest()->request->get('creationProjet');
$dataGroupe = $this->getRequest()->request->get('creationGroupe');
/* On enregistre l'objet */
$projet->setObjet($manager->pregSlash($dataProjet['objet']));
/* On enregistre l'expertise */
$expertise = new Expertise();
$expertise = $em->getRepository('CommercialBundle:Expertise')->find($dataProjet['expertise']);
$projet->setExpertise($expertise);
/* On enregistre la description */
$projet->setDescription($request->request->get('projetDescription'));
/* On enregistre la date de création */
$projet->setDateCreation(new \DateTime(date('Y-m-d')));
/* On enregistre l'état du projet */
$etat = new Etat();
$etat = $em->getRepository('CommercialBundle:Etat')->find(10);
$projet->setEtat($etat);
/* On enregistre le chef de projet */
$user = new Utilisateur();
$user = $em->getRepository('UtilisateurBundle:Utilisateur')->find($this->getUser());
$projet->setCreateur($user);
/* Si le nouveau projet ne fait pas parti d'un groupe */
if($choixGroupe == '0') {
/* On enregistre le contact */
$contact = new Contact();
$contact = $em->getRepository('ClientBundle:Contact')->find($dataProjet['contact']);
$projet->setContact($contact);
/* On enregistre la filiale */
$filiale = new Filiale();
$filiale = $em->getRepository('ClientBundle:Filiale')->find($dataProjet['filiale']);
$projet->setFiliale($filiale);
/* On récupère le dernier projet créé */
$projetLast = $em->getRepository('CommercialBundle:Projet')->findOneBy(array(), array('numeroDossier' => 'DESC'));
/* S'il a au moins un projet créé */
if($projetLast != null) {
/* On incrémente le numéro de dossier de dernier projet créé */
$numeroDossier = $projetLast->getNumeroDossier() + 1;
if($numeroDossier < 10)
$numeroDossier = '00'.$numeroDossier;
else
$numeroDossier = '0'.$numeroDossier;
/* On enregistre le numéro de dossier */
$projet->setNumeroDossier($numeroDossier);
}
else {
/* On enregistre le numéro de dossier à 1 */
$projet->setNumeroDossier('001');
}
}
/* Si le nouveau projet fait parti d'un groupe de projets */
else {
/* Si le projet fait partie d'un nouveau groupe */
if($choixGroupe2 == '0') {
/* On enregistre le contact */
$contact = new Contact();
$contact = $em->getRepository('ClientBundle:Contact')->find($dataProjet['contact']);
$projet->setContact($contact);
/* On enregistre la filiale */
$filiale = new Filiale();
$filiale = $em->getRepository('ClientBundle:Filiale')->find($dataProjet['filiale']);
$projet->setFiliale($filiale);
/* On enregistre l'état */
$groupe->setEtat('1');
/* On enregistre l'objet */
$groupe->setObjet($manager->pregSlash($dataGroupe['objet']));
/* On enregistre la description */
$groupe->setDescription($groupeDescription);
/* On enregistre le contact */
$groupe->setContact($contact);
/* On enregistre la filiale */
$groupe->setFiliale($filiale);
/* On enregistre la date de création */
$groupe->setDateCreation(new \DateTime(date('Y-m-d')));
/* On récupère le dernier projet créé */
$projetLast = $em->getRepository('CommercialBundle:Projet')->findOneBy(array(), array('numeroDossier' => 'DESC'));
/* S'il a au moins un projet créé */
if($projetLast != null) {
/* On incrémente le numéro de dossier de dernier projet créé */
$numeroDossier = $projetLast->getNumeroDossier() + 1;
if($numeroDossier < 10)
$numeroDossier = '00'.$numeroDossier;
else
$numeroDossier = '0'.$numeroDossier;
}
else {
$numeroDossier = '001';
}
/* On enregistre le numéro de dossier du groupe */
$groupe->setNumeroDossier($numeroDossier);
/* On enregistre le numéro de dossier du projet */
$projet->setNumeroDossier($numeroDossier);
$projet->setNumeroProjet('001');
/* On enregistre le groupe */
$projet->setGroupe($groupe);
$em->persist($groupe);
}
/* Si le projet fait partie d'un groupe de projets déjà existant */
else {
/* On récupère le groupe */
$groupe = $em->getRepository('CommercialBundle:Groupe')->find($dataGroupe['groupeExistant']);
/* On enregistre le contact */
$contact = new Contact();
$contact = $em->getRepository('ClientBundle:Contact')->find($groupe->getContact()->getId());
$projet->setContact($contact);
/* On enregistre la filiale */
$filiale = new Filiale();
$filiale = $em->getRepository('ClientBundle:Filiale')->find($groupe->getFiliale()->getId());
$projet->setFiliale($filiale);
/* On enregistre le numéro de dossier du projet */
$projet->setNumeroDossier($groupe->getNumeroDossier());
/* On récupère les projets du groupe */
$projetDuGroupe = $em->getRepository('CommercialBundle:Projet')->findBy(array('groupe' => $groupe));
$m = '001';
if(sizeof($projetDuGroupe) != 0) {
$m = sizeof($projetDuGroupe) + 1;
if($m < 10)
$m = '00'.$m;
else
$m = '0'.$m;
}
/* On enregistre le numéro de projet du projet */
$projet->setNumeroProjet($m);
/* On enregistre le groupe */
$projet->setGroupe($groupe);
}
}
/* On enregistre l'impression */
if($dataProjet['impression'] != null) {
$projet->setImpression($dataProjet['impression']);
}
$em->persist($projet);
$em->flush();
return $response;
}
Ajax
/**
* Affichage du pop-up
*/
function nouveauProjet() {
var route = '{{ path("nouveau_projet") }}';
return $.ajax({
type: 'GET',
url: route,
success: function(data) {
$('.modal.modal-creation-projet-active')
.modal('show');
$('.modal-creation-projet-active .modal-body')
.empty()
.append(data);
/* Fonction editeurTexte() */
editeurTexte();
/* Fonction clientFiliale() */
$('#creationProjet_client').change(function(){
/* Id du groupe sélectionné */
var client = $(this).val();
clientFiliale(client,'#creationProjet_filiale');
});
/* Fonction clientContact() */
$('#creationProjet_filiale').change(function(){
/* Id de la filiale sélectionnée */
var filiale = $(this).val();
clientContact(filiale,'#creationProjet_contact');
});
/* Gestion des éléments du groupe de projet */
formElement();
/* On bloque l'envoi du formulaire par la touche Entrée */
$('.noEnterSubmit').keypress(function(e){
if ( e.which == 13 ) return false;
});
/* A l'envoi du formulaire */
$('form[name=creationProjet]').submit(function (e) {
e.preventDefault();
/* Fonction formErrorDate() */
if(!formErrorDate()) {
/* Fonction creationProjetSubmit() */
creationProjetSubmit();
}
});
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
});
}
/**
* Action à l'envoi du formulaire (création)
*/
function creationProjetSubmit() {
/* On initialise la route */
var url = '{{ path("nouveau_projet_ajax") }}';
return $.ajax({
type: "POST",
data: $('form[name=creationProjet]').serialize(),
url: url,
cache: false,
success: function(data){
$('.modal.modal-creation-projet-active')
.modal('show');
$('.modal-creation-projet-active .modal-body')
.empty()
.append(data);
$('.close-modal').css('display','none');
$('.btn-modifier-projet').click(function (e) {
e.preventDefault();
/* On récupère l'id du projet dans le bouton modifier */
var id = $(this).attr('id');
/* On récupère le choix du projet : nouveau (=0) ou existant (=1) */
var choixGroupe = $(this).attr('choixGroupe');
/* On active le loader */
$('.glyphicon.spinner').removeClass('noactive').addClass('active');
/* Fonction modifierProjet(id) */
modifierProjet(id,choixGroupe);
});
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
});
}
Your question is very poor quality.
Does someone already have this issue and know how to fix it ?
It sounds like very bad code. check than the ajax new popup is really offering a new form (hidden inputs etc...). Check how the id of the project persisted is get, it shouldn't be contained in the form data.
Is it a problem with the browser's cache ?
No (Post Request are not cached)
in my controller, I call my form this way :
$projet = new Projet();
$form = $this->createForm(new CreationProjetType($this->getDoctrine()->getManager()), $projet);
Do you think it can get a former $project ?
I want to copy the content of a div (.boxes) to another page (drills.php) when I click on one of them.
Here is my HTML
<div class="boxes le8">
<div class="img" style="background-image:url(http://charlesfstcyr.890m.com/coaching/img/drills/le8.png)"></div>
<h1>Le 8</h1>
<p class="date">Octobre 2016 - Dany Dubé</p>
<div style="display:none">
<p class="description">Patinage en 8 autour des cônes.</p>
<p class="enseignement">Virage brusques, Contrôle de rondelle, Croisement en sortie de virage.</p>
<p class="variantes">Départ au sifflet pour 10 virages le plus rapidement possible, Rapprocher les cônes jusqu’à une distance de 1 bâton entre les cônes,Passes à l’entraineur en sortie de virage.</p>
<video src="img/drillsVid/Le8.mp4" autoplay controls muted loop></video>
</div>
</div>
<div class="boxes chandelle">
<div class="img" style="background-image:url(http://charlesfstcyr.890m.com/coaching/img/drills/chandelle.png)"></div>
<h1>La Chandelle</h1>
<p class="date">Octobre 2016 - Dany Dubé</p>
<div style="display:none">
<p class="description">Départ au centre du cercle de mise-en-jeu avec une rondelle. Contourner le premier cône et remonter vers le cône en haut de zone pour effectuer un virage brusque. Revenir contourner le troisième cône et par la suite revenir au point d’origine par l’extérieur des cônes en laissant la rondelle à son point d’origine avant de récupérer une rondelle de l’autre côté. Effectuer le trajet inverse avec la deuxième rondelle.</p>
<p class="enseignement">Croisement lors des virages, </p>
<p class="enseignement">Changement de direction rapide, </p>
<p class="enseignement">Protection de rondelle.</p>
<p class="variantes">Passe à l’entraineur situé sur la ligne bleu, </p>
<p class="variantes">Lancer au but(2 lancers), </p>
<p class="variantes">Tour complet de chacun des cônes dans la première portion du parcours.</p>
<video src="img/drillsVid/chandelle.mp4" autoplay controls muted loop></video>
</div>
</div>
<div class="boxes pcoin">
<div class="img" style="background-image:url(http://charlesfstcyr.890m.com/coaching/img/drills/pcoin.png)"></div>
<h1>Le Petit Coin</h1>
<p class="date">Octobre 2016 - Dany Dubé</p>
<div style="display:none">
<p class="description">Départ sur le point de mise-en-jeu en poussant la rondelle dans le coin. Le joueur récupère la rondelle et se dirige le long de la bande pour passer entre le cône et le but. Patiner entre le cône pour aller contourner le second cône. Se diriger au filet pour prendre un lancer.</p>
<p class="enseignement">Récupération de rondelle, </p>
<p class="enseignement">Récupération de rondelle, </p>
<p class="enseignement">Récupération de rondelle</p>
<p class="variantes">Remonter vers le haut de la zone au départ pour effectuer le trajet en sens inverse, </p>
<p class="variantes">Passe à l’entraineur situé sur le haut du cercle de mise-en-jeu.</p>
<video src="img/drillsVid/pcoin.mp4" autoplay controls muted loop></video>
</div>
</div>
<div class="boxes gcoin">
<div class="img" style="background-image:url(http://charlesfstcyr.890m.com/coaching/img/drills/gcoin.png)"></div>
<h1>Le Grand Coin</h1>
<p class="date">Octobre 2016 - Dany Dubé</p>
<div style="display:none">
<p class="description">Départ sur le point de mise-en-jeu, le joueur lance la rondelle dans le coin. Le joueur la récupère, se dirige le long de la bande pour remonter entre le cône et le but. Il se dirige ensuite vers la gauche pour contourner les deux autres cônes de l’extérieur. Il redescend en fond de zone pour contourner le cône à partir de la droite et revenir devant le filet pour prendre un lancer.</p>
<p class="enseignement">Récupération de rondelle, </p>
<p class="enseignement">Virages brusques, </p>
<p class="enseignement">Lancer en espace restreint</p>
<p class="variantes">Passe à un joueur 2 devant le filet pour lancer sur réception, </p>
<p class="variantes">Tour complet de chacun des cônes</p>
<video src="img/drillsVid/gcoin.mp4" autoplay controls muted loop></video>
</div>
</div>
<div class="boxes fleur">
<div class="img" style="background-image:url(http://charlesfstcyr.890m.com/coaching/img/drills/fleur.png)"></div>
<h1>La Fleur</h1>
<p class="date">Octobre 2016 - Dany Dubé</p>
<div style="display:none">
<p class="description">Départ au centre. Contourner chacun des cônes en revenant toujours au point de mis-en-jeu. Après le 4ième cône, repasser au point de mise-en-jeu et se diriger au filet pour un lancer. Lors des diagonales, s’assurer de croiser le centre pour contourner les cônes autant du revers que du coup droit.</p>
<p class="enseignement">Virages brusques, </p>
<p class="enseignement">Protection de rondelle, </p>
<p class="enseignement">Croisement en sortie de virage.</p>
<p class="variantes">Course avec des joueurs dans chacun des cercles.</p>
<video src="img/drillsVid/fleur.mp4" autoplay controls muted loop></video>
</div>
</div>
<div class="boxes model final">
<div class="img" style="background-image:url(../img/drills/.png)"></div>
<h1>Nom</h1>
<p class="date">Date - Auteur</p>
<div style="display:none">
<p class="description">Description</p>
<p class="enseignement">Item1 /\n/ Item2 /\n/ Item3</p>
<p class="variantes">Item1 /\n/ Item2 /\n/ Item3</p>
<video src="img/drillsVid/.mp4" autoplay controls muted loop></video>
</div>
</div>
I have done something similar with Javascript to copy it in a DIV but I really want to copy it on another page.
For now, here's the result with the Javascript
I'm trying to figuring out what might be the reason why Gregwar Bundle is throwing an exception online while on my local development environment everything is fine.
Locally:
vs
online:
Please note that on my local machine I'm using MAMP (Apache 2.2.29 / PHP 7.0.0) and on the server side I have Linux (PHP 5.6.24). I'm surprised with this issue because I'm used to deploying Symfony2-based websites online on Linux environment with Gregwar bundle in them without having to deal with this kind of issue.
Any clues or suggestions please?
Check out the way Gregwar bundle's methods are being called in my template:
{% extends "APPlatformBundle::layout.html.twig" %}
{% block title %}Accueil - {{ parent() }}{% endblock %}
{% block platform_body %}
{% block header %}
{% include('APPlatformBundle:Common:header.html.twig') with { active :'home'} %}
{% endblock %}
{% block carousel %}
{#{% include('APPlatformBundle:Common:carousel.html.twig') %}#}
{% endblock %}
{% block content %}
<div class="container">
<div class="line section-title center" style="text-align: center;color:white;text-shadow: 2px 2px 2px #f58222, 0 0 25px green, 0 0 5px #f58222;">
<!--<hr class="styledLine">-->
<h2>CONSULTEZ NOS MODULES CI-DESSOUS OU TOUT LE CATALOGUE COMPLET</h2>
<hr class="styledLine">
<div class="row pull-right">
Le Catalogue complet : <img src="{{ image('bundles/applatform/images/PDFicon.png').cropResize(32,32) }}">
</div>
</div>
<div class="row">
<div class="col-sm-offset-3 col-sm-6 heading-colored"><p style="margin-bottom: 50px;"></p></div><br><br>
<div class="col-sm-3"></div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-4">
<div class="panel panel-default panel-home">
<div class="panel-heading thumbnail">
<div class="caption">
<h4 class="">En savoir plus</h4>
<p class="">
<a class="btn btn-success" href="https://gallery.mailchimp.com/d93866a99a15e6ad3c79732a1/files/Module_8_Communication_Te_le_communication_Marketing_et_De_veloppement_commercial.pdf" data-toggle="tooltip" data-placement="bottom" title="Vous pouvez consulter et/ou télécharger ce module"><i class="glyphicon glyphicon-save-file" style="color:#f58222;"></i> Consulter ce module</a><br/><br/>
<a class="btn btn-primary" href="https://gallery.mailchimp.com/d93866a99a15e6ad3c79732a1/files/Fiche_d_inscription_modifie_.pdf" data-toggle="tooltip" data-placement="bottom" title="Téléchargez, remplissez puis renvoyez-nous cette fiche par mail"><i class="glyphicon glyphicon-save-file" style="color:#f58222;"></i> Télécharger la fiche d'inscription</a>
</p>
</div>
<img src="{{ image('bundles/applatform/images/com-telecom-marketing.png').cropResize(275,183) }}" alt="" height="">
</div>
<div class="panel-body panel-body-home">
<h5 id="modules" class="heading-colored">Communication –Télécommunication – Marketing & Développement commercial</h5>
<div>
<!--
<p>
<p>La FONCTION COMMUNICATION d'entreprise repose sur trois enjeux :</p>
<ul>
<li>donner du sens à la stratégie de l'entreprise et permettre à chacun de se l'approprier et de la décliner au quotidien ;</li>
<li>concourir au développement de l'activité par la mise en œuvre d'outils et de techniques de communication ;</li>
<li>faciliter les relations de coopération et de confiance entre les acteurs internes et externes.</li>
</ul>
<p>Chyqat, à travers les Modules qui vous sont proposés ici, vous offre la possibilité de maitriser tous les contours de cette Fonction essentielle, de positionner votre entreprise et de posséder toutes armes de succès de votre profession de spécialiste de la Communication acteurs internes et externes.</p>
</p>
-->
</div>
</div>
<div class="panel-footer heading-colored"><a class="btn btn-default" data-toggle="tooltip" data-placement="top" title="Vous pouvez consulter et/ou télécharger ce module"><i class="glyphicon glyphicon-plus-sign" style="color: #f58222;"></i> En savoir plus</a> </div>
</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-4">
<div class="panel panel-default panel-home">
<div class="panel-heading thumbnail">
<div class="caption">
<h4 class="">En savoir plus</h4>
<p class="">
<a class="btn btn-success" href="https://gallery.mailchimp.com/d93866a99a15e6ad3c79732a1/files/Module_10_Budget_Conto_le_budge_taire_et_Conto_le_de_gestion.pdf" data-toggle="tooltip" data-placement="bottom" title="Vous pouvez consulter et/ou télécharger ce module"><i class="glyphicon glyphicon-file" style="color:#f58222;"></i> Consulter ce module</a><br/><br/>
<a class="btn btn-primary" href="https://gallery.mailchimp.com/d93866a99a15e6ad3c79732a1/files/Fiche_d_inscription_modifie_.pdf" data-toggle="tooltip" data-placement="bottom" title="Téléchargez, remplissez puis renvoyez-nous cette fiche par mail"><i class="glyphicon glyphicon-file" style="color:#f58222;"></i> Télécharger la fiche d'inscription</a>
</p>
</div>
<img src="{{ image('bundles/applatform/images/budget2.jpg').forceResize(275,183) }}" alt="">
</div>
<div class="panel-body panel-body-home">
<h5 class="heading-colored">Budget - Contôle budgétaire & Contrôle de gestion </h5>
<!--<p>
En cette période de crise économique et financière, les entreprises surveillent plus que jamais les aspects financiers de leurs activités. En tant que garants de la rentabilité, les services comptables et financiers sont particulièrement exposés. La prise en compte, le plus tôt possible, des désirs des utilisateurs d’information financière dans l’élaboration des outils et des procédures est une étape indispensable dans la construction d’un système financier stable et efficace.
Aussi convient-il de se montrer réactif et de s’adapter à l’exigence accrue demandée à tous les membres des directions financières bien au-delà de la simple logique de réduction des coûts exigée par la crise.
</p>-->
</div>
<div class="panel-footer heading-colored"><a class="btn btn-default" data-toggle="tooltip" data-placement="top" title="Vous pouvez consulter et/ou télécharger ce module"><i class="glyphicon glyphicon-plus-sign" style="color: #f58222;"></i> En savoir plus</a></div>
</div>
</div>
Finally I was able to figure out what was wrong. Actually, I had to make sure the images files were available online. Since I used symlink option on my local environment et used
{{ image('bundles/app/images/img.jpg').forceResize(x,y) }}
code to make a link to my images, after uploading my images from /public folder, I had to make a hard copy of my images on /web/bundles/app/images/ folder. I tried to run assets:install --symlink online, but for some reason it didn't work.
I'm currently working on a custom built wordpress template for a customer. I've finished the homepage (http://www.spotutrecht.com/) and was about to add a new page (http://www.spotutrecht.com/spot-map/).
Now I have the following issue: The style.css only succesfully applies the styles to my homepage, but not to the "spot-map" page. I've referenced the stylesheet in the header.php and it a functioning link to the stylesheet apears in the head tag. I've clicked on it and it shows my stylesheet. Still, it does not apply the styles to my "spot-map" page.
I'm still new to template building, so maybe (and I hope) I am doing something very obvious wrong, but I can't figure out what it is.
My header.php:
<?php
/**
* The header for our theme.
*
* This is the template that displays all of the <head> section and everything up until <div id="content">
*
* #link https://developer.wordpress.org/themes/basics/template-files/#template-partials
*
* #package Spot_Utrecht
*/
?><!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="profile" href="http://gmpg.org/xfn/11">
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>">
<!-- Bootstrap core CSS -->
<link href="<?php bloginfo('stylesheet_directory'); ?>/assets/css/bootstrap.min.css" rel="stylesheet">
<!-- Font Awesome Icons -->
<link href="<?php bloginfo('stylesheet_directory'); ?>/assets/css/font-awesome/css/font-awesome.min.css" rel="stylesheet">
<!-- Google Fonts -->
<link href='http://fonts.googleapis.com/css?family=Raleway:400,500,600,700' rel='stylesheet' type='text/css'>
<!-- Stylehsheet.css -->
<link href="<?php echo get_template_directory_uri(); ?>/style.css" rel="stylesheet">
<?php wp_head(); ?>
<!-- HTML5 shiv and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body <?php body_class(); ?>>
<div id="page" class="site">
<a class="skip-link screen-reader-text" href="#content"><?php esc_html_e( 'Skip to content', 'spotutrecht' ); ?></a>
<div class="page-wrap">
<!-- HEADER
================================================== -->
<header class="site-header" role="banner">
<!-- NAVBAR
================================================== -->
<div class="navbar-wrapper">
<div class="navbar navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="social-buttons">
<i class="fa fa-facebook"></i>
<i class="fa fa-instagram"></i>
</div>
</div>
<?php
wp_nav_menu( array(
'theme_location' => 'primary',
'container' => 'nav',
'container_class' => 'navbar-collapse collapse',
'menu_class' => 'nav navbar-nav navbar-right'
) );
?>
</div><!-- container -->
</div>
</div>
</header>
My spot-map/crowdfunding page
<?php
/*
Template Name: Crowdfunding
*/
get_header(); ?>
<section id="spotbanner-otherpages">
<article>
<div class="container">
<div class="row">
<div class="col-sm-3">
</div>
<div class="col-sm-6 logo_container">
<img src="<?php bloginfo('stylesheet_directory') ?>/assets/img/spot_square.png" alt="SPOT Logo">
</div>
<div class="col-sm-3">
</div>
</div>
</div>
</article>
</section>
<section class="frontpage white">
<article>
<div class="container">
<div class="row">
<div class="col-sm-2">
</div>
<div class="col-sm-8">
<h1>SPOT kaart van Utrecht in de maak door Rood Gras</h1>
<p class="lead">Samen met Utrechtse illustrator Rob van Barneveld is SPOT bezig om een alternatieve kaart van Utrecht te ontwerpen. Hierbij wordt de toerist tips gegeven voor koffiezaken en die anders wellicht onontdekt zouden blijven. En hierbij hebben ze jullie hulp hard nodig!</p>
<p>Het idee ontstond doordat de Utrechters vinden dat hun stad meer te bieden heeft dan de gebruikelijke toeristische hotspots. Utrecht barst van de leuke kleine zaakjes en met een getekende kaart hopen ze hiervoor meer reclame te kunnen maken. </p>
<p>Het uiteindelijke doel is een reeks plattegronden samen te stellen met behulp van diverse lokale vormgevers, elk met een eigen thema. De kaarten wordt uiteindelijk in gelimiteerde oplage gezeefdrukt op A0-formaat en als poster geprint met RISO op A3-formaat bij Kapitaal. Ook wordt er samen gewerkt met hostels en zal de plattegrond in kaartvorm worden verkocht om de bekendheid te vergroten</p>
<h2>Wie is Rob van Barneveld?</h2>
<p>Rob van Barneveld is een Utrechtse illustrator met kenmerkende stijl die werkt onder de naam Rood Gras. Momenteel bekend van zijn kopjes en strips, maar binnenkort van de plattegrond! Hij werkt voor o.a. De Correspondent en VPRO en heeft een succesvolle webshop. </p>
<h2>Waarom deze plattegrond?</h2>
<p>Met deze plattegrond brengt SPOT je op andere plekken. SPOT kan op deze manier in de behoeftes van de toeristen en nieuwe utrechters voorzien. Velen worden op dit moment naar de standaard plekken gestuurd, maar ‘act like a local’ en ga van de gebaande paden af. SPOT vindt het belangrijk dat Utrecht niet alleen herkend en bekend wordt door haar grachten en domtoren maar ook herkend en bekend wordt door haar initiatieven, koffie, kroegen en etc en te voorzien in een beleving. Door deze overzichtelijke plattegrond brengt SPOT de mensen daar. Daarnaast wordt het ook nog eens een super souvenir van de stad Utrecht. </p>
<h2>Waarom het thema koffie?</h2>
<p>Het aantal koffiezaken in Utrecht is in 10 jaar geëxplodeerd en stuk voor stuk zijn ze razend populair. Maar wat maakt ze onderscheidend? En hoe komen toeristen er terecht? Rob van Barneveld maakt (in opdracht) kopjes en ander servies met een grappige afbeelding; een plattegrond over koffie sluit hier natuurlijk perfect bij aan! </p>
<h2>Waarom financieel bijdragen?</h2>
<p>Momenteel is deze crowdfundingpagina erzodat mensen geld kunnen bijdragen om het project te realiseren. Afhankelijk van het bedrag dat in wordt gelegd kunnen verschillende bedankjes worden verkregen. Waarom zou je dit doen? Omdat je zo lokale vormgevers steunt, je nieuwe Utrechters en bezoekers helpt te ontdekken wat deze stad zo ontzettend tof maakt en je er een bijzondere beloning voor terug krijgt. En vooral: omdat wij jou dan ontzettend dankbaar zullen zijn!</p>
<h2>Maar wat is die beloning dan?</h2>
<p>Wanneer je een bepaald bedrag doneert, krijg je daar het volgende voor terug:
<table class="crowdfunding">
<tr><td class="price">€10</td> <td class="reward">een plattegrond</td></tr>
<tr><td class="price">€25</td> <td class="reward">een Rood Gras ansichtkaartenset en een plattegrond</td></tr>
<tr><td class="price">€50</td> <td class="reward">een Rood Gras koffiekopje en een plattegrond</td></tr>
<tr><td class="price">€100</td> <td class="reward">een Rood Gras gepersonaliseerd koffiekopje en een RISO poster</td></tr>
<tr><td class="price">€150</td> <td class="reward">een Rood Gras ansichtkaartenset, twee koffiekopjes en een RISO poster</td></tr>
<tr><td class="price">€175+</td> <td class="reward">een zeefdruk van de plattegrond</td></tr>
</table>
</p>
</div>
<div class="col-sm-2">
</div>
</div>
</div>
</article>
</section>
<section class="frontpage blue">
<article>
<div class="container">
<div class="row">
<div class="col-sm-2">
</div>
<div class="col-sm-8">
<div class="icon-container">
<i class="fa fa-clock-o" name="Clock Icon"></i>
</div>
<h1>Opening Hours</h1>
<p class="center">
Wednesday: 10:00 - 18:00 <br>
Thursday: 10:00 - 18:00 <br>
Friday: 10:00 - 18:00 <br>
Saturday: 11:00 - 18:00
</p>
</div>
<div class="col-sm-2">
</div>
</div>
</div>
</article>
</section>
</div><!-- page wrap div -->
<?php get_footer(); ?>
You have missed one closing braces for span.reward class.
span.reward {
margin-left: 10px;
Close that selector and the styles will get applied.