ajuste css

Implementación Html Manuel
Sin ultimos ajustes solicitados.
parent 1dbe58a3
...@@ -13,52 +13,96 @@ ...@@ -13,52 +13,96 @@
<!-- ================== BEGIN BASE CSS STYLE ================== --> <!-- ================== BEGIN BASE CSS STYLE ================== -->
<!-- ================== END BASE CSS STYLE ================== --> <!-- ================== END BASE CSS STYLE ================== -->
<link rel="stylesheet" href="{{asset('manuel/css/style.css')}}"> <link rel="stylesheet" href="{{asset('manuel/css/style.css')}}">
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,600;0,700;0,800;1,300;1,400;1,600;1,700;1,800&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,600;0,700;0,800;1,300;1,400;1,600;1,700;1,800&display=swap" rel="stylesheet">
{% block stylesheets %} {% block stylesheets %}
{% endblock %} {% endblock %}
<!-- ================== BEGIN BASE JS ================== --> <!-- ================== BEGIN BASE JS ================== -->
<link
href="https://fonts.googleapis.com/css2?family=Cormorant:ital,wght@0,300;0,400;0,500;0,600;0,700;1,700&display=swap"
rel="stylesheet">
<!-- ================== END BASE JS ================== --> <!-- ================== END BASE JS ================== -->
<!-- <h2>COMIENZA TU TRATAMIENTO CON INOVAGE</h2> --> <!-- <h2>COMIENZA TU TRATAMIENTO CON INOVAGE</h2> -->
<div class="header-top"> {% block head %}
<img class="img-responsive" src="{{asset('manuel/images/header-i.png')}}" alt="INOVAGE Selfie Nutrapharm" /> {% endblock %}
</div> </head>
{% block head %} <body>
{% endblock %}
</head>
<body>
<!-- end #header --> <!-- end #header -->
<!-- begin #content --> <!-- begin #content -->
<div class="responsive-bar">
<div class="logo">
<img src="{{asset('manuel/images/logo-inovage-480x59.png')}}" alt="logo" />
</div>
<div id="menu-mobile" class="menu">
<h4>
<img src="{{asset('manuel/images/hamb-icon.svg')}}" width="28" style="float:right;">
</h4>
</div>
</div>
<nav>
<div class="logo">
<img src="{{asset('manuel/images/logo-inovage-480x59.png')}}"
alt="logo" />
</div>
<ul>
<li><a href="https://www.inovage.cl/selfie-test/">Selfie Test</a></li>
<li><a href="https://www.inovage.cl/como-funciona/">¿Cómo Actúa?</a></li>
<li><a href="https://www.inovage.cl/los-culpables/">Efecto</a></li>
<li><a href="#">
<i class="_mi dashicons dashicons-cart" aria-hidden="true" style="font-size:1.4em;"></i></a>
</li>
</ul>
</nav>
<div id="content" class="content">
{% block body %}
<div id="content" class="content"> {% endblock %}
{% block body %} </div>
{% endblock %} <!-- end page container -->
</div>
<!-- end page container --> <!-- ================== BEGIN BASE JS ================== -->
{#<script src="{{ asset('backend/plugins/jquery/jquery-1.9.1.min.js')}}"></script>#}
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<!--[if lt IE 9]>
<![endif]-->
<script type="text/javascript">
$(window).on('scroll', function () {
if ($(window).scrollTop()) {
$('nav').addClass('black');
} else {
$('nav').removeClass('black');
}
})
/*menu button onclick function*/
$(document).ready(function () {
$('#menu-mobile').on("click", function () {
console.log("click");
$("nav ul").toggleClass("active")
})
})
<!-- ================== BEGIN BASE JS ================== --> </script>
<script src="{{ asset('backend/plugins/jquery/jquery-1.9.1.min.js')}}"></script>
<!--[if lt IE 9]>
<![endif]-->
<!-- ================== END BASE JS ================== -->
<!-- ================== BEGIN PAGE LEVEL JS ================== --> <!-- ================== END BASE JS ================== -->
{% block javascripts %}
{% endblock %}
<!-- ================== END PAGE LEVEL JS ================== -->
<!-- ================== BEGIN PAGE LEVEL JS ================== -->
{% block javascripts %}
{% endblock %}
<!-- ================== END PAGE LEVEL JS ================== -->
{% block jsApp %}
{% endblock %} {% block jsApp %}
</body> {% endblock %}
{% block docready %} </body>
{% endblock %} {% block docready %}
{% endblock %}
</html> </html>
<img id="imagen_carga" class="img-responsive img-marco" {%if isMobile == 1 %} src="{{asset('manuel/images/selfie-alto-630px.jpg')}}" {% else %} src="{{asset('manuel/images/selfie-ancho-630px.jpg')}}" {% endif %} />
<div id="tomarFotoContainer" style="display:none;">
<div id="cameraContainer" class="camera" style="display: block">
<button id="startbutton"></button>
<video id="video">No se encuentra disponible una camara</video>
</div>
<canvas id="canvas" width="auto" height="auto">
</canvas>
</div>
<div id="output_img_inovage" class="output" style="display: none">
<img id="photo" width="100%" height="100%" alt="Foto Tomada por camara" src="">
</div>
<div id="subirFotoContainer" style="display:none">
<input type='file' id="imgInp" accept="image/*" />
</div>
<img id="imagenUsuario" width="100%" height="100%" style="display:none" src="#" alt="Imagen subida" />
<img id="imagen_carga" class="img-responsive img-marco-2" src="{{asset('manuel/images/selfie-p.jpg')}}" />
<div id="tomarFotoContainer" style="display:none;">
<div id="cameraContainer" class="camera" style="display: block">
<button id="startbutton"></button>
<video id="video">No se encuentra disponible una camara</video>
</div>
<canvas id="canvas" width="auto" height="auto">
</canvas>
</div>
<div id="output_img_inovage" class="output" style="display: none">
<img id="photo" width="100%" height="100%" alt="Foto Tomada por camara" src="">
</div>
<div id="subirFotoContainer" style="display:none">
<input type='file' id="imgInp" accept="image/*" />
</div>
<img id="imagenUsuario" width="100%" height="100%" style="display:none" src="#" alt="Imagen subida" />
{% extends 'producto_final/base_final.html.twig' %}
{% block head %}
<meta property="fb:app_id" content="{{facebookAppId}}" />
<meta property="og:url" content="{{urlSitio}}{{seccionComparacion}}?idp={{idp}}&us=0" />
<meta property="og:type" content="website" />
<meta property="og:title" content="NutraPharm - Comparación Foto" />
<meta property="og:description" content="{{comentarioFinal}}" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image" content="{{urlSitio}}uploads/users/{{idp}}_comparacion.png"/>
<script>
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id))
return;
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/es_ES/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
{% endblock %}
{% block body %}
<div class="header-top-adaptable">
<img class="img-responsive desafio-inovage" src="{{asset('manuel/images/desafio-inovage.png')}}" alt="Desafio Inovage" />
<img class="img-responsive fondo-adaptable" src="{{asset('manuel/images/header-compara.jpg')}}" alt="Atrévete al desafío" />
</div>
<div class="app-container">
<div class="container-c">
<div class="marco-foto alargador-marco-foto">
<img class="img-responsive" src="{{urlSitio}}nutrapharm/get/photo?file_name={{idp}}_comparacion.{{extComparacion}}" />
</div>
</div>
<div id="fb-root"></div>
<div id="containerFormulario" class="container-form">
<div>
<p class="control-label b txt-center">{{comentarioFinal}}</p>
<!-- <input id="comentarioFotoUsuario" class="barra-comentario" type="textarea" placeholder="Comentario..." /> -->
<!--<textarea id="comentarioFotoUsuario" class="barra-comentario" name="mytextarea" placeholder="Escribe tu Comentario"></textarea>-->
</div>
{#<div>
<button id="btnGuardar" onclick="iniciarProceso(event)" class="btn-guardar">Registra tu cambio</button>
</div>#}
<div>
<div class="rrss-icons">
<a href="#" id="buttonShare"></a>
</div>
{#<div class="txt-comparte">
Comparte con el hashtag <br><strong>#selfietestinovage</strong>
</div>#}
{#MENSAJES EXITO ERROR#}
{{ include('producto_final/mensaje-exito-error.html.twig') }}
{#MENSAJES EXITO ERROR#}
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
<script>
var url = '{{urlSitio}}{{seccionComparacion}}?idp={{idp}}';
var usuarioNutraPharm = "{{idp}}";
window.fbAsyncInit = function () {
FB.init({
appId: '{{facebookAppId}}',
status: true,
xfbml: true,
cookie: true,
version: 'v7.0'
});
}
function countCompartirFacebook(idUsuario) {
var url = "{{ path('nutrapharm_compartir_facebook') }}";
var formData = new FormData();
formData.append("idUsuarioNutrapharm", idUsuario);
$.ajax
({
type: "POST",
url: url,
data: formData,
async: true,
cache: false,
contentType: false,
processData: false,
timeout: 60000,
statusCode: {
400: function (respuesta) {
console.log(respuesta.responseText);
var respuestaJson = JSON.parse(respuesta.responseText);
writeMessage(respuestaJson.msg, "error");
$("#btnGuardar").prop("disabled", false);
},
500: function (respuesta) {
console.log(respuesta.responseText);
var respuestaJson = JSON.parse(respuesta.responseText);
writeMessage(respuestaJson.msg, "error");
$("#btnGuardar").prop("disabled", false);
}
},
success: function (data) {
console.log("proceso finalizado...");
//writeMessage(data.msg, "success");
}
});
}
$("#buttonShare").click(function () {
console.log("compartiendo en facebook...");
FB.ui({
xfbml: true,
method: 'share',
href: url
}, function (response) {
console.log(response);
if (typeof response !== 'undefined') {
console.log('Comparación Compartido en Facebook.');
writeMessage("Compartido en Facebook!", "success");
countCompartirFacebook(usuarioNutraPharm);
} else {
console.log('Comparación No Compartido en Facebook.');
writeMessage("No se pudo compartir en Facebook. Intente nuevamente!", "error");
}
});
})
function iniciarProceso(event) {
event.preventDefault();
writeMessage("Iniciando proceso");
window.location.assign("{{path('nutrapharm_homepage')}}");
}
function writeMessage(msg, type) {
if (type === "success") {
$("#error-content-nutrapharm").html("");
$("#error-nutrapharm").hide();
$("#exito-content-nutrapharm").html(msg);
$("#exito-nutrapharm").show();
} else {
$("#exito-content-nutrapharm").html("");
$("#exito-nutrapharm").hide();
$("#error-content-nutrapharm").html(msg);
$("#error-nutrapharm").show();
}
}
</script>
{% endblock %}
{% extends 'producto_final/base_final.html.twig' %} {% extends 'producto_final/base_final.html.twig' %}
{% block stylesheets %} {% block stylesheets %}
<link rel="stylesheet" href="{{asset('manuel/css/camera.css')}}"> <link rel="stylesheet" href="{{asset('manuel/css/camera.css')}}">
{% endblock %} {% endblock %}
{% block head %} {% block head %}
<meta property="fb:app_id" content="{{facebookAppId}}" /> <meta property="fb:app_id" content="{{facebookAppId}}" />
...@@ -22,40 +22,21 @@ ...@@ -22,40 +22,21 @@
js.src = "//connect.facebook.net/es_ES/sdk.js"; js.src = "//connect.facebook.net/es_ES/sdk.js";
fjs.parentNode.insertBefore(js, fjs); fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk')); }(document, 'script', 'facebook-jssdk'));
</script> </script>
<div class="header-top">
<img class="img-responsive" src="{{asset('manuel/images/header-i.jpg')}}" alt="INOVAGE Selfie Nutrapharm" />
</div>
{% endblock %} {% endblock %}
{% block body %} {% block body %}
<div class="app-container"> <div class="app-container">
<img class="img-responsive logo-app" src="{{asset('manuel/images/atrevete-desafio.png')}}" alt="Atrévete al desafío" /> <img class="img-responsive logo-app" src="{{asset('manuel/images/atrevete-desafio.png')}}" alt="Atrévete al desafío" />
<div class="marco-foto">
<div id="tomarFotoContainer" style="display:none">
<div class="form-group">
<div id="cameraContainer" class="camera" style="display: block">
<video id="video">No se encuentra disponible una camara</video>
<button id="startbutton">Tomar Foto</button>
</div>
</div>
<div class="form-group">
<canvas id="canvas" width="auto" height="auto">
</canvas>
</div>
</div>
<div id="output_img_inovage" class="output" style="display: none">
<img id="photo" width="100%" height="100%" alt="Foto Tomada por camara" src="">
</div>
<div id="subirFotoContainer" style="display:none">
<div class="form-group"> {#CODIGO OCULTO#}
<input type='file' id="imgInp" accept="image/*" /> {{ include('producto_final/camera_logic.html.twig') }}
</div> {#CODIGO OCULTO#}
</div>
<img id="imagenUsuario" width="100%" height="100%" style="display:none" src="#" alt="Imagen subida" />
</div>
<div class="botonera-fotos"> <div class="botonera-fotos">
<div> <div>
<button id="tomarFoto" name="tomarFoto" class="tomarFoto" onclick="mostrarTomarFoto(event)">Tomar Foto</button> <button id="tomarFoto" name="tomarFoto" class="tomarFoto" onclick="mostrarTomarFoto(event)">Tomar Foto</button>
...@@ -63,8 +44,7 @@ ...@@ -63,8 +44,7 @@
</div> </div>
<div> <div>
<button id="subirFoto" name="subirFoto" class="subirFoto" onclick="mostrarSubirFoto(event)">Subir Foto
<button id="subirFoto" name="subirFoto" class="subirFoto" onclick="openSeleccionadorArchivos(event)">Subir Foto
</button> </button>
<label class=" control-label">Sube una foto desde tu galería </br>o desde tu PC</label> <label class=" control-label">Sube una foto desde tu galería </br>o desde tu PC</label>
</div> </div>
...@@ -93,14 +73,15 @@ ...@@ -93,14 +73,15 @@
</div> </div>
<div> {#MENSAJES EXITO ERROR#}
<button id="btnGuardar" class="btn-guardar">Guardar</button> {{ include('producto_final/mensaje-exito-error.html.twig') }}
</div> {#MENSAJES EXITO ERROR#}
<button id="btnGuardar" class="btn-guardar">Finalizar</button>
<div id="mensaje-nutrapharm" style="display:none" class="alert alert-success" role="alert"></div>
</div> </div>
<div class="terminos-condiciones">
<a href="#">Términos y Condiciones de <strong>NUTRAPHARM</strong></a>
</div>
</div> </div>
{% endblock %} {% endblock %}
...@@ -112,46 +93,61 @@ ...@@ -112,46 +93,61 @@
var usuarioNutraPharm = "none"; var usuarioNutraPharm = "none";
var tipoUsuarioFormulario = 1; var tipoUsuarioFormulario = 1;
var upload; var upload;
</script> var preUpload;
</script>
<script> <script>
var fileUpload = $("#imgInp"); var fileUpload = $("#imgInp");
function mostrarTomarFoto(event) { function mostrarTomarFoto(event) {
event.preventDefault(); event.preventDefault();
//var fotoActual = $("#tomarFotoContainer");
//fotoActual.css("background-image", "url('')");
$("#imagen_carga").attr('src', "");
console.log("mostrando tomar foto..."); console.log("mostrando tomar foto...");
$("#tomarFotoContainer").show(); $("#tomarFotoContainer").show();
$("#cameraContainer").show(); $("#cameraContainer").show();
$("#startbutton").show();
$("#subirFotoContainer").hide(); $("#subirFotoContainer").hide();
$("#output_img_inovage").hide(); $("#output_img_inovage").hide();
$("#imagenUsuario").attr('src', ""); $("#imagenUsuario").attr('src', "");
$("#imagenUsuario").hide(); $("#imagenUsuario").hide();
imagenTomada = false; $("#imagen_carga").hide();
imagenTomada = true; imagenTomada = true;
imagenSubida = false;
} }
function mostrarSubirFoto(event) { function mostrarSubirFoto(event) {
event.preventDefault(); event.preventDefault();
openSeleccionadorArchivos(event);
console.log("mostrando subir foto..."); console.log("mostrando subir foto...");
$("#imagen_carga").show();
$("#tomarFotoContainer").hide(); $("#tomarFotoContainer").hide();
$("#cameraContainer").hide(); $("#cameraContainer").hide();
$("#subirFotoContainer").show(); $("#startbutton").hide();
$('#imagen_carga').attr('src', {%if isMobile == 1 %} "{{asset('manuel/images/selfie-alto-630px.jpg')}}" {% else %} "{{asset('manuel/images/selfie-ancho-630px.jpg')}}" {% endif %});
//$("#subirFotoContainer").show();
$("#output_img_inovage").hide(); $("#output_img_inovage").hide();
$("#tomarFoto").html("Toma una foto con tu cámara aquí");
imagenTomada = false; imagenTomada = false;
imagenSubida = true; imagenSubida = true;
} }
function openSeleccionadorArchivos(event){
function openSeleccionadorArchivos(event) {
event.preventDefault(); event.preventDefault();
$("#imgInp").trigger("click"); $("#imgInp").trigger("click");
} }
function readURL(input) { function readURL(input) {
if (input.files && input.files[0]) { if (input.files && input.files[0]) {
var reader = new FileReader(); var reader = new FileReader();
reader.onload = function (e) { reader.onload = function (e) {
$('#imagenUsuario').attr('src', e.target.result); $('#imagenUsuario').attr('src', e.target.result);
$('#imagen_carga').attr('src', e.target.result);
//generateUrlBackground(e.target.result, "data");
//upload.doPreUpload();//por ahora asi
} }
reader.readAsDataURL(input.files[0]); // convert to base64 string reader.readAsDataURL(input.files[0]); // convert to base64 string
$('#imagenUsuario').show(); //$('#imagenUsuario').show();
} }
} }
...@@ -161,6 +157,8 @@ ...@@ -161,6 +157,8 @@
readURL(this); readURL(this);
}); });
var Upload = function (file) { var Upload = function (file) {
this.file = file; this.file = file;
...@@ -182,7 +180,7 @@ ...@@ -182,7 +180,7 @@
var url = "{{ path('nutrapharm_upload') }}"; var url = "{{ path('nutrapharm_upload') }}";
var formData = new FormData(); var formData = new FormData();
$("#btnGuardar").prop("disabled", true); $("#btnGuardar").prop("disabled", true);
$("#btnGuardar").html("Procesando...");
if (imagenTomada == true && imagenSubida == false) { if (imagenTomada == true && imagenSubida == false) {
formData.append("upload_file", 0); formData.append("upload_file", 0);
formData.append("imagen", $("#photo").attr('src')); formData.append("imagen", $("#photo").attr('src'));
...@@ -215,19 +213,13 @@ ...@@ -215,19 +213,13 @@
400: function (respuesta) { 400: function (respuesta) {
console.log(respuesta.responseText); console.log(respuesta.responseText);
var respuestaJson = JSON.parse(respuesta.responseText); var respuestaJson = JSON.parse(respuesta.responseText);
$("#mensaje-nutrapharm").removeClass("alert-success"); writeMessage(respuestaJson.msg, "error");
$("#mensaje-nutrapharm").addClass("alert-danger");
$("#mensaje-nutrapharm").html(respuestaJson.msg);
$("#mensaje-nutrapharm").show();
$("#btnGuardar").prop("disabled", false); $("#btnGuardar").prop("disabled", false);
}, },
500: function (respuesta) { 500: function (respuesta) {
console.log(respuesta.responseText); console.log(respuesta.responseText);
var respuestaJson = JSON.parse(respuesta.responseText); var respuestaJson = JSON.parse(respuesta.responseText);
$("#mensaje-nutrapharm").removeClass("alert-success"); writeMessage(respuestaJson.msg, "error");
$("#mensaje-nutrapharm").addClass("alert-danger");
$("#mensaje-nutrapharm").html(respuestaJson.msg);
$("#mensaje-nutrapharm").show();
$("#btnGuardar").prop("disabled", false); $("#btnGuardar").prop("disabled", false);
} }
}, },
...@@ -236,26 +228,70 @@ ...@@ -236,26 +228,70 @@
tipoUsuarioFormulario = data.tipo; tipoUsuarioFormulario = data.tipo;
usuarioNutraPharm = data.usuario; usuarioNutraPharm = data.usuario;
} }
writeMessage(data.msg, "success");
$("#mensaje-nutrapharm").removeClass("alert-danger"); $("#btnGuardar").hide();
$("#mensaje-nutrapharm").addClass("alert-success");
$("#mensaje-nutrapharm").html(data.msg);
$("#mensaje-nutrapharm").show();
}, },
complete: function (data) { complete: function (data) {
$("#btnGuardar").prop("disabled", false); $("#btnGuardar").prop("disabled", false);
$("#btnGuardar").html("Finalizar");
} }
}); });
}; };
Upload.prototype.doPreUpload = function(){
var that = this;
var url = "{{ path('nutrapharm_pre_upload') }}";
var formData = new FormData();
var idTemp = Math.random()+Math.random();
if (imagenTomada == true && imagenSubida == false) {
formData.append("upload_file", 0);
formData.append("imagen", $("#photo").attr('src'));
} else if (imagenSubida == true && imagenTomada == false) {
formData.append("upload_file", 1);
}
formData.append("paso", "primer");
formData.append("id", idTemp);
console.log(this.file);
if (this.file != null) {
formData.append("imagen", this.file, this.getName());
}
$.ajax
({
type: "POST",
url: url,
data: formData,
async: true,
cache: false,
contentType: false,
processData: false,
timeout: 60000,
statusCode: {
400: function (respuesta) {
console.log(respuesta.responseText);
var respuestaJson = JSON.parse(respuesta.responseText);
},
500: function (respuesta) {
console.log(respuesta.responseText);
var respuestaJson = JSON.parse(respuesta.responseText);
}
},
success: function (data) {
$('#imagen_carga').attr('src', data.url);
console.log("imagen pre-actualizada");
},
complete: function (data) {
}
});
}
$("#btnGuardar").click(function (e) { $("#btnGuardar").click(function (e) {
e.preventDefault(); e.preventDefault();
if (imagenSubida == false && imagenTomada == false) { if (imagenSubida == false && imagenTomada == false) {
$("#mensaje-nutrapharm").removeClass("alert-success"); writeMessage("Debe seleccionar o tomar una imagen!", "error");
$("#mensaje-nutrapharm").addClass("alert-danger");
$("#mensaje-nutrapharm").html("Debe seleccionar o tomar una imagen!");
$("#mensaje-nutrapharm").show();
return false; return false;
} }
if (typeof upload == "undefined") { if (typeof upload == "undefined") {
...@@ -274,5 +310,50 @@ ...@@ -274,5 +310,50 @@
} else } else
upload = new Upload(null); upload = new Upload(null);
}); });
function writeMessage(msg, type) {
if (type === "success") {
$("#error-content-nutrapharm").html("");
$("#error-nutrapharm").hide();
$("#exito-content-nutrapharm").html(msg);
$("#exito-nutrapharm").show();
} else {
$("#exito-content-nutrapharm").html("");
$("#exito-nutrapharm").hide();
$("#error-content-nutrapharm").html(msg);
$("#error-nutrapharm").show();
}
}
function generateUrlBackground(source, type) {
if (type == "url") {
var fotoActual = $("#imagen_carga");
var img = new Image();
img.src = source;
fotoActual.attr("src", img.src);
fotoActual.show();
} else {
var fotoActual = $("#imagen_carga");
var img = new Image();
img.src = source;
fotoActual.css("src", img.src.replace(/(\r\n|\n|\r)/gm, ""));
fotoActual.show();
}
}
window.onorientationchange = function () {
var orientation = window.orientation;
switch (orientation) {
case 0:
case 90:
case - 90:
console.log("modo horizontal");
//window.location.reload();
break;
}
};
</script> </script>
{% endblock %} {% endblock %}
\ No newline at end of file
{% extends 'producto_final/base_final.html.twig' %}
{% block stylesheets %}
<link rel="stylesheet" href="{{asset('manuel/css/camera.css')}}">
{% endblock %}
{% block head %}
<meta property="fb:app_id" content="{{facebookAppId}}" />
<meta property="og:url" content="{{urlSitio}}{{seccionGenerarCambios}}?idp={{idp}}" />
<meta property="og:type" content="website" />
<meta property="og:title" content="NutraPharm - Comparación Foto" />
<meta property="og:description" content="Visualiza tus cambios!" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image" content="{{urlSitio}}uploads/users/{{idp}}.{{extInicial}}"/>
<script>
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id))
return;
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/es_ES/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div class="header-top">
<img class="img-responsive" src="{{asset('manuel/images/header-i.jpg')}}" alt="INOVAGE Selfie Nutrapharm" />
</div>
{% endblock %}
{% block body %}
<div class="app-container">
<img class="img-responsive logo-app" src="{{asset('manuel/images/atrevete-desafio.png')}}" alt="Atrévete al desafío" />
<div>
<p class="txt-center">Esta es la foto que te tomaste al iniciar el tratamiento</p>
</div>
<!-- <div class="marco-foto" style="background: url('images/natalie-p.jpg') no-repeat center center; background-size:cover;"></div> -->
<div class="contenedor-compara-fotos">
<div class="separador-marco-foto">
<img src="{{urlSitio}}nutrapharm/get/photo?file_name={{idp}}.{{extInicial}}" class="img-responsive img-marco-2">
<h2 class="txt-foto-anterior">Foto Anterior</h2>
</div>
<div id="foto_actual" class="separador-marco-foto">
{#CODIGO OCULTO#}
{{ include('producto_final/camera_logic_2.html.twig') }}
{#CODIGO OCULTO#}
</div>
</div>
<div>
<p class="txt-center">Ahora queremos ver cuales han sido los cambios en estos días. <strong>Toma una foto con tu cámara aquí</strong>.</p>
</div>
<div class="botonera-fotos">
<div>
<button id="tomarFoto" name="tomarFoto" class="tomarFoto" onclick="mostrarTomarFoto(event)">Tomar Foto</button>
<label class=" control-label">Toma una foto con tu cámara aquí</label>
</div>
<div>
<button id="subirFoto" name="subirFoto" class="subirFoto" onclick="mostrarSubirFoto(event)">Subir Foto
</button>
<label class=" control-label">Sube una foto desde tu galería </br>o desde tu PC</label>
</div>
</div>
<div id="subirFotoContainer" style="display:none">
<div class="form-group">
<input type='file' id="imgInp" accept="image/*" />
<img id="imagenUsuario" width="200" height="auto" style="display:none" src="#"
alt="Imagen subida" />
</div>
</div>
<div id="containerFormulario" class="container-form" style="display:none">
<div>
<p class="control-label b txt-center">Comenta tu foto <strong>luego de 30 días de tratamiento</strong></p>
<textarea id="comentarioFotoUsuario" class="barra-comentario" name="mytextarea" placeholder="Escribe tu Comentario"></textarea>
</div>
{#MENSAJES EXITO ERROR#}
{{ include('producto_final/mensaje-exito-error.html.twig') }}
{#MENSAJES EXITO ERROR#}
<div>
<button id="btnGuardar" class="btn-guardar">Finalizar</button>
</div>
</div>
</div>
{%endblock%}
{% block javascripts %}
<script src="{{asset('frontend/js/capture-2.js')}}"></script>
<script>
var imagenSubida = false;
var imagenTomada = false;
var usuarioNutraPharm = "{{idp}}";
var tipoUsuarioFormulario = 3;
var upload;
</script>
<script>
var fileUpload = $("#imgInp");
function mostrarTomarFoto(event) {
event.preventDefault();
//var fotoActual = $("#tomarFotoContainer");
//fotoActual.css("background-image", "url('')");
$("#imagen_carga").attr('src', "");
console.log("mostrando tomar foto...");
$("#tomarFotoContainer").show();
$("#cameraContainer").show();
$("#startbutton").show();
$("#subirFotoContainer").hide();
$("#output_img_inovage").hide();
$("#imagenUsuario").attr('src', "");
$("#imagenUsuario").hide();
$("#imagen_carga").hide();
imagenTomada = true;
imagenSubida = false;
}
function mostrarSubirFoto(event) {
event.preventDefault();
openSeleccionadorArchivos(event);
console.log("mostrando subir foto...");
$("#imagen_carga").show();
$("#tomarFotoContainer").hide();
$("#cameraContainer").hide();
$("#startbutton").hide();
$('#imagen_carga').attr('src', {%if isMobile == 1 %} "{{asset('manuel/images/selfie-alto-630px.jpg')}}" {% else %} "{{asset('manuel/images/selfie-ancho-630px.jpg')}}" {% endif %});
//$("#subirFotoContainer").show();
$("#output_img_inovage").hide();
$("#tomarFoto").html("Toma una foto con tu cámara aquí");
imagenTomada = false;
imagenSubida = true;
}
function openSeleccionadorArchivos(event) {
event.preventDefault();
$("#imgInp").trigger("click");
}
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#imagenUsuario').attr('src', e.target.result);
$('#imagen_carga').attr('src', e.target.result);
generateUrlBackground(e.target.result, "data");
}
reader.readAsDataURL(input.files[0]); // convert to base64 string
//$('#imagenUsuario').show();
}
}
fileUpload.on('change', function () {
$("#containerFormulario").show();
$("#output_img_inovage").hide();
readURL(this);
});
var Upload = function (file) {
this.file = file;
};
Upload.prototype.getType = function () {
return this.file.type;
};
Upload.prototype.getSize = function () {
return this.file.size;
};
Upload.prototype.getName = function () {
if (this.file != null)
return this.file.name;
else
return "";
};
Upload.prototype.doUpload = function () {
var that = this;
var url = "{{ path('nutrapharm_upload') }}";
var formData = new FormData();
$("#btnGuardar").prop("disabled", true);
$("#btnGuardar").html("Procesando...");
if (imagenTomada == true && imagenSubida == false) {
formData.append("upload_file", 0);
formData.append("imagen", $("#photo").attr('src'));
} else if (imagenSubida == true && imagenTomada == false) {
formData.append("upload_file", 1);
}
console.log(this.file);
if (this.file != null) {
formData.append("imagen", this.file, this.getName());
}
formData.append("comentarioFotoUsuario", $("#comentarioFotoUsuario").val());
formData.append("usuarioNutraPharm", usuarioNutraPharm);
formData.append("tipoUsuarioFormulario", tipoUsuarioFormulario);
$.ajax
({
type: "POST",
url: url,
data: formData,
async: true,
cache: false,
contentType: false,
processData: false,
timeout: 60000,
statusCode: {
400: function (respuesta) {
console.log(respuesta.responseText);
var respuestaJson = JSON.parse(respuesta.responseText);
writeMessage(respuestaJson.msg, "error");
$("#btnGuardar").prop("disabled", false);
},
500: function (respuesta) {
console.log(respuesta.responseText);
var respuestaJson = JSON.parse(respuesta.responseText);
writeMessage(respuestaJson.msg, "error");
$("#btnGuardar").prop("disabled", false);
}
},
success: function (data) {
$("#shareButtonContainer").show();
if (data.tipo === 2) {
tipoUsuarioFormulario = data.tipo;
usuarioNutraPharm = data.usuario;
}
writeMessage(data.msg, "success");
window.location.assign("{{path('nutrapharm_comparacion',{ 'idp': idp })}}");
},
complete: function (data) {
$("#btnGuardar").prop("disabled", false);
$("#btnGuardar").html("Finalizar");
}
});
};
$("#btnGuardar").click(function (e) {
e.preventDefault();
if (imagenSubida == false && imagenTomada == false) {
writeMessage("Debe subir o tomar una foto!", "error");
return false;
}
if (typeof upload == "undefined") {
upload = new Upload(null);
}
upload.doUpload();
});
$("#imgInp").on("change", function (e) {
e.preventDefault();
if ($(this)[0].files.length != 0) {
var file = $(this)[0].files[0];
upload = new Upload(file);
console.log(upload)
imagenSubida = true;
} else
upload = new Upload(null);
});
function writeMessage(msg, type) {
if (type === "success") {
$("#error-content-nutrapharm").html("");
$("#error-nutrapharm").hide();
$("#exito-content-nutrapharm").html(msg);
$("#exito-nutrapharm").show();
} else {
$("#exito-content-nutrapharm").html("");
$("#exito-nutrapharm").hide();
$("#error-content-nutrapharm").html(msg);
$("#error-nutrapharm").show();
}
}
function generateUrlBackground(source, type) {
if (type == "url") {
var fotoActual = $("#imagen_carga");
var img = new Image();
img.src = source;
fotoActual.attr("src", img.src);
fotoActual.show();
} else {
var fotoActual = $("#imagen_carga");
var img = new Image();
img.src = source;
fotoActual.css("src", img.src.replace(/(\r\n|\n|\r)/gm, ""));
fotoActual.show();
}
}
</script>
{% endblock %}
<div>
<div id="exito-nutrapharm" class="alert-box success" style="display:none"><img class="icp" src="{{asset('manuel/images/success.png')}}"> <span id="exito-content-nutrapharm">Write your error message here.</span></div>
<div id="error-nutrapharm" class="alert-box error" style="display:none"><img class="icp" src="{{asset('manuel/images/error.png')}}"> <span id="error-content-nutrapharm">Write your success message here.</span></div>
</div>
...@@ -27,6 +27,18 @@ class Utiles { ...@@ -27,6 +27,18 @@ class Utiles {
return $log; return $log;
} }
public static function isMobile($request) {
$useragent = $request->headers->get('User-Agent');
if (!$useragent) {
return false;
}
return (
preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i', $useragent) ||
preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i', substr($useragent, 0, 4))
);
}
public static function isMsisdn2($msisdn) { public static function isMsisdn2($msisdn) {
// if(preg_match("/^[0-9]+$/", $msisdn) && strlen($msisdn) == 11) // if(preg_match("/^[0-9]+$/", $msisdn) && strlen($msisdn) == 11)
if (is_numeric($msisdn) && strlen($msisdn) == 9) if (is_numeric($msisdn) && strlen($msisdn) == 9)
......
...@@ -30,7 +30,11 @@ class DefaultController extends Controller { ...@@ -30,7 +30,11 @@ class DefaultController extends Controller {
$facebookAppId = Utiles::getParametroConfiguracion("facebook_app_id"); $facebookAppId = Utiles::getParametroConfiguracion("facebook_app_id");
$seccionInicio = Utiles::getParametroConfiguracion("seccion_formulario_inicial"); $seccionInicio = Utiles::getParametroConfiguracion("seccion_formulario_inicial");
$dias = Utiles::getParametroConfiguracion("dias_comparacion"); $dias = Utiles::getParametroConfiguracion("dias_comparacion");
return $this->render('producto_final/landing_producto.html.twig', array("urlSitio" => Utiles::getParametroConfiguracion("url_sitio"), "facebookAppId" => $facebookAppId, "seccionInicio" => $seccionInicio, "dias" => $dias));
$isMobile = Utiles::isMobile($request);
$log->debug("Es Movil : $isMobile");
return $this->render('producto_final/landing_producto.html.twig', array("urlSitio" => Utiles::getParametroConfiguracion("url_sitio"), "facebookAppId" => $facebookAppId, "seccionInicio" => $seccionInicio, "dias" => $dias, "isMobile" => $isMobile));
} }
public function subirCambioAction(Request $request) { public function subirCambioAction(Request $request) {
...@@ -58,7 +62,7 @@ class DefaultController extends Controller { ...@@ -58,7 +62,7 @@ class DefaultController extends Controller {
$ext = $usuario->getUnuExtInicial(); $ext = $usuario->getUnuExtInicial();
return $this->render('producto/landing_producto_generar_comparacion.html.twig', array("idp" => $id, "extInicial" => $ext,"seccionGenerarCambios" => $seccionGenerarCambios ,"seccionComparacion" => $seccionComparacion, "urlSitio" => Utiles::getParametroConfiguracion("url_sitio"), "facebookAppId" => $facebookAppId)); return $this->render('producto_final/landing_producto_generar_comparacion.html.twig', array("idp" => $id, "extInicial" => $ext,"seccionGenerarCambios" => $seccionGenerarCambios ,"seccionComparacion" => $seccionComparacion, "urlSitio" => Utiles::getParametroConfiguracion("url_sitio"), "facebookAppId" => $facebookAppId));
} }
public function comparacionAction(Request $request) { public function comparacionAction(Request $request) {
...@@ -86,7 +90,7 @@ class DefaultController extends Controller { ...@@ -86,7 +90,7 @@ class DefaultController extends Controller {
$ext = $usuario->getUnuExtComparacion(); $ext = $usuario->getUnuExtComparacion();
return $this->render('producto/landing_comparacion_cambios.html.twig', array("idp" => $id, "extComparacion" => $ext ,"seccionComparacion" => $seccionComparacion, "seccionInicial" => $seccionInicial, "comentarioFinal" => $comentarioFinal , "urlSitio" => Utiles::getParametroConfiguracion("url_sitio"), "facebookAppId" => $facebookAppId, "us"=>$us)); return $this->render('producto_final/landing_comparacion_cambios.html.twig', array("idp" => $id, "extComparacion" => $ext ,"seccionComparacion" => $seccionComparacion, "seccionInicial" => $seccionInicial, "comentarioFinal" => $comentarioFinal , "urlSitio" => Utiles::getParametroConfiguracion("url_sitio"), "facebookAppId" => $facebookAppId, "us"=>$us));
} }
public function errorAction(Request $request){ public function errorAction(Request $request){
...@@ -99,7 +103,50 @@ class DefaultController extends Controller { ...@@ -99,7 +103,50 @@ class DefaultController extends Controller {
$seccionError = Utiles::getParametroConfiguracion("seccion_error"); $seccionError = Utiles::getParametroConfiguracion("seccion_error");
return $this->render('producto/landing_error.html.twig', array("urlSitio" => Utiles::getParametroConfiguracion("url_sitio"), "facebookAppId" => $facebookAppId, "seccionInicio" => $seccionInicio, "seccionError" => $seccionError)); return $this->render('producto/landing_error.html.twig', array("urlSitio" => Utiles::getParametroConfiguracion("url_sitio"), "facebookAppId" => $facebookAppId, "seccionInicio" => $seccionInicio, "seccionError" => $seccionError));
} }
public function preUploadAction(Request $request){
$log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:preUploadAction', 'nutrapharm/index');
$ua = $request->headers->get('User-Agent');
$ip = $request->getClientIp();
$uploadFile = $request->get("upload_file", 0);
$idNutrapharm = $request->get("id", null);
$paso = $request->get("paso",null);
$uploadDir = $this->getParameter('upload_dir');
$log->debug("Ingresando al landing de Nutrapharm... IP : $ip | UA : $ua| UPLOAD FILE : $uploadFile....");
if ($uploadFile == 1) {//foto subida
$log->debug("Creando variable de archivo...");
$file = $request->files->get('imagen');
if (empty($file)) {
$log->debug("No se subio un archivo de imagen válido...");
return new JsonResponse(array("msg" => "No se subio una imagen", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_INICIAL), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
} else {//foto tomada
$log->debug("Creando variable de archivo en base a foto tomada por el usuario...");
$file = $request->get("imagen", null);
}
$log->debug("Iniciando generación de archivo asociado al nuevo usuario...");
if ($uploadFile == 1) {
$log->debug("Procesando archivo fisico subido...");
$filename = $idNutrapharm ."temp_$paso". "." . $file->getClientOriginalExtension();
$file->move($uploadDir, $filename);
} else {
$log->debug("Procesando archivo tomado con dispositivo...");
$data = $this->getBase64Image($file);
$filename = $idNutrapharm ."temp_$paso". "." . $data[1];
$fpc = file_put_contents("$uploadDir/$filename", $data[0]);
}
$log->debug("escalando imagen en registro nuevo...");
$this->scaleAndCrop("$uploadDir/$filename");
$url = Utiles::getParametroConfiguracion("ruta_archivos_url");
$log->debug("Retornando Respuesta a Usuario | Respuesta : " . Response::HTTP_OK);
return new JsonResponse(array("id" => $idNutrapharm ,"url" => $url."".$filename), Response::HTTP_OK, ['content-type' => 'application/json']);
}
public function uploadAction(Request $request) { public function uploadAction(Request $request) {
$log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:uploadAction', 'nutrapharm/index'); $log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:uploadAction', 'nutrapharm/index');
$ua = $request->headers->get('User-Agent'); $ua = $request->headers->get('User-Agent');
...@@ -192,21 +239,26 @@ class DefaultController extends Controller { ...@@ -192,21 +239,26 @@ class DefaultController extends Controller {
$usuarioNutraPharm->setUnuExtInicial($file->getClientOriginalExtension()); $usuarioNutraPharm->setUnuExtInicial($file->getClientOriginalExtension());
$usuarioNutraPharm->save(); $usuarioNutraPharm->save();
$filename = $idNutrapharm . "." . $file->getClientOriginalExtension(); $filename = $idNutrapharm . "." . $file->getClientOriginalExtension();
//$filename_temp = $idNutrapharm . "_temp." . $file->getClientOriginalExtension();
$file->move($uploadDir, $filename); $file->move($uploadDir, $filename);
//$file->move($uploadDir, $filename_temp);
} else { } else {
$log->debug("Procesando archivo tomado con dispositivo..."); $log->debug("Procesando archivo tomado con dispositivo...");
$data = $this->getBase64Image($file); $data = $this->getBase64Image($file);
$usuarioNutraPharm->setUnuExtInicial($data[1]); $usuarioNutraPharm->setUnuExtInicial($data[1]);
$usuarioNutraPharm->save(); $usuarioNutraPharm->save();
$filename = $idNutrapharm . "." . $data[1]; $filename = $idNutrapharm . "." . $data[1];
//$filename_temp = $idNutrapharm . "_temp." . $data[1];
$fpc = file_put_contents("$uploadDir/$filename", $data[0]); $fpc = file_put_contents("$uploadDir/$filename", $data[0]);
//$fpc_temp = file_put_contents("$uploadDir/$filename_temp", $data[0]);
} }
$log->debug("escalando imagen en registro nuevo..."); $log->debug("escalando imagen en registro nuevo...");
$this->scaleAndCrop("$uploadDir/$filename"); $this->scaleAndCrop("$uploadDir/$filename");
$log->debug("Retornando Respuesta a Usuario | Tipo : " . UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA . " | Usuario : $idNutrapharm | Respuesta : " . Response::HTTP_OK); $log->debug("Retornando Respuesta a Usuario | Tipo : " . UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA . " | Usuario : $idNutrapharm | Respuesta : " . Response::HTTP_OK);
return new JsonResponse(array("msg" => "La informacion ha sido ingresada con exito!", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA, "usuario" => $idNutrapharm), Response::HTTP_OK, ['content-type' => 'application/json']); return new JsonResponse(array("msg" => "La informacion ha sido ingresada con exito! \n En 30 días más recibiras un correo para poder comparar tus cambios. ", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA, "usuario" => $idNutrapharm), Response::HTTP_OK, ['content-type' => 'application/json']);
} else if ($tipo == UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA && $idUsuarioNutraPharm != null) { } else if ($tipo == UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA && $idUsuarioNutraPharm != null) {
//Actualizar informacion ya existente //Actualizar informacion ya existente
$log->debug("Iniciando Actualizacion de Usuario $idUsuarioNutraPharm..."); $log->debug("Iniciando Actualizacion de Usuario $idUsuarioNutraPharm...");
...@@ -427,7 +479,11 @@ class DefaultController extends Controller { ...@@ -427,7 +479,11 @@ class DefaultController extends Controller {
$image_x = imagecreatefrompng($filename_x); $image_x = imagecreatefrompng($filename_x);
} elseif ($fileType_x == "jpeg" || $fileType_x == "JPEG") { } elseif ($fileType_x == "jpeg" || $fileType_x == "JPEG") {
$image_x = imagecreatefromjpeg($filename_x); $image_x = imagecreatefromjpeg($filename_x);
}else{
$image_x = imagecreate($filename_x);
} }
// Load images and then copy to destination image // Load images and then copy to destination image
if ($fileType_y == "png" || $fileType_y == "PNG") { if ($fileType_y == "png" || $fileType_y == "PNG") {
......
...@@ -10,6 +10,10 @@ nutrapharm_comparacion: ...@@ -10,6 +10,10 @@ nutrapharm_comparacion:
path: /muestra/cambio path: /muestra/cambio
defaults: {_controller: NutrapharmBundle:Default:comparacion} defaults: {_controller: NutrapharmBundle:Default:comparacion}
nutrapharm_pre_upload:
path: /pre/upload/photo
defaults: { _controller : NutrapharmBundle:Default:preUpload}
nutrapharm_upload: nutrapharm_upload:
path: /upload/photo path: /upload/photo
defaults: { _controller: NutrapharmBundle:Default:upload } defaults: { _controller: NutrapharmBundle:Default:upload }
......
(function () { (function () {
var width = 1200; // We will scale the photo width to this var width = 630; // We will scale the photo width to this
var height = 0; // This will be computed based on the input stream var height = 0; // This will be computed based on the input stream
var streaming = false; var streaming = false;
...@@ -30,18 +30,41 @@ ...@@ -30,18 +30,41 @@
video.addEventListener('canplay', function (ev) { video.addEventListener('canplay', function (ev) {
if (!streaming) { if (!streaming) {
height = video.videoHeight / (video.videoWidth / width);
console.log(video.videoHeight);
if (isNaN(height)) { /*if (video.videoHeight > width) {
height = width / (4 / 3); console.log("PORTRAIT");
width = 0;
height = 630;
width = video.videoWidth / (video.videoHeight / height);
console.log(width);
if (isNaN(width)) {
width = height / (4 / 3);
}
video.setAttribute('width', width);
video.setAttribute('height', height);
canvas.setAttribute('width', width);
canvas.setAttribute('height', height);
streaming = true;
}else {*/
console.log("LANDSCAPE");
height = video.videoHeight / (video.videoWidth / width);
console.log(height);
if (isNaN(height)) {
height = width / (4 / 3);
}
video.setAttribute('width', width);
video.setAttribute('height', height);
canvas.setAttribute('width', width);
canvas.setAttribute('height', height);
streaming = true;
} }
/*}*/
video.setAttribute('width', width);
video.setAttribute('height', height);
canvas.setAttribute('width', width);
canvas.setAttribute('height', height);
streaming = true;
}
}, false); }, false);
startbutton.addEventListener('click', function (ev) { startbutton.addEventListener('click', function (ev) {
...@@ -62,6 +85,9 @@ ...@@ -62,6 +85,9 @@
var data = canvas.toDataURL('image/png'); var data = canvas.toDataURL('image/png');
photo.setAttribute('src', data); photo.setAttribute('src', data);
//var fotoActual = $("#tomarFotoContainer");
//fotoActual.css("background-image", "url('')");
} }
function takepicture() { function takepicture() {
...@@ -74,21 +100,34 @@ ...@@ -74,21 +100,34 @@
var data = canvas.toDataURL('image/png'); var data = canvas.toDataURL('image/png');
console.log(data); console.log(data);
photo.setAttribute('src', data); photo.setAttribute('src', data);
//var fotoActual = $("#tomarFotoContainer");
//var img = new Image();
//img.src = data;
//fotoActual.css("background-image", "url('" + img.src.replace(/(\r\n|\n|\r)/gm, "") + "')");
var fotoActual = $("#imagen_carga");
var img = new Image();
img.src = data;
fotoActual.attr("src", img.src.replace(/(\r\n|\n|\r)/gm, "") );
fotoActual.show();
$("#tomarFotoContainer").hide();
$("#tomarFoto").html("Repetir Foto");
} else { } else {
clearphoto(); clearphoto();
} }
$("#cameraContainer").hide(); $("#cameraContainer").hide();
$("#output_img_inovage").show(); //$("#output_img_inovage").show();
} }
function showForm() { function showForm() {
$("#containerFormulario").show(); $("#containerFormulario").show();
} }
function hidePhotoButtons() { function hidePhotoButtons() {
$("#tomarFotoContainer").show(); $("#tomarFotoContainer").hide();
$("#subirFotoContainer").hide(); $("#subirFotoContainer").hide();
$("#startbutton").hide();
} }
window.addEventListener('load', startup, false); window.addEventListener('load', startup, false);
......
...@@ -9,50 +9,67 @@ and open the template in the editor. ...@@ -9,50 +9,67 @@ and open the template in the editor.
*/ */
/* CSS comes here */ /* CSS comes here */
#video { #video {
border: 1px solid black; border:6px solid #f5a800; /*N*/
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
#photo { #photo {
border: 1px solid black; border: 1px solid black;
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
#canvas { #canvas {
display: none; display: none;
} }
.camera { .camera {
width: 100%; /* width: 100%; */
display: inline-block; /* display: inline-block; */
} margin: 0 auto 2em auto;
display:flex !important;
.output { justify-content: center;
width: 100%; position:relative;
display: inline-block;
}
}
#startbutton {
display: block; .output {
position: relative; width: 100%;
margin-left: auto; display: inline-block;
margin-right: auto; }
bottom: 36px;
padding: 5px; #startbutton {
background-color: #6a67ce; display: block;
border: 1px solid rgba(255, 255, 255, 0.7); position: absolute;
font-size: 14px; margin-left: auto;
color: rgba(255, 255, 255, 1.0); margin-right: auto;
cursor: pointer; bottom: 1em;
} padding: 5px;
background-color: rgba(255, 255, 255, 0);
.contentarea { background: url('../images/camera-icon.svg') no-repeat center center;
font-size: 16px; border: 3px solid rgba(255, 255, 255, 1);
font-family: Arial; border-radius: 30px;
text-align: center; -ms-border-radius : 30px;
} -moz-border-radius: 30px;
-webkit-border-radius: 30px;
-o-border-radius: 30px;
font-size: 14px;
color: rgba(255, 255, 255, 1.0);
cursor: pointer;
width: 60px;
height: 60px;
z-index: 100;
background-size: 35px;
}
.contentarea {
font-size: 16px;
font-family: Arial;
text-align: center;
}
...@@ -16,54 +16,54 @@ article, aside, canvas, details, embed, ...@@ -16,54 +16,54 @@ article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup, figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary, menu, nav, output, ruby, section, summary,
time, mark, audio, video { time, mark, audio, video {
margin: 0; margin: 0;
padding: 0; padding: 0;
border: 0; border: 0;
font-size: 100%; font-size: 100%;
font: inherit; font: inherit;
vertical-align: baseline; vertical-align: baseline;
} }
/* HTML5 display-role reset for older browsers */ /* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section { footer, header, hgroup, menu, nav, section {
display: block; display: block;
} }
body { body {
line-height: 1; line-height: 1;
} }
ol, ul { ol, ul {
list-style: none; list-style: none;
} }
blockquote, q { blockquote, q {
quotes: none; quotes: none;
} }
blockquote:before, blockquote:after, blockquote:before, blockquote:after,
q:before, q:after { q:before, q:after {
content: ''; content: '';
content: none; content: none;
} }
table { table {
border-collapse: collapse; border-collapse: collapse;
border-spacing: 0; border-spacing: 0;
} }
/*** CSS Reset ***/ /*** CSS Reset ***/
html { html {
-webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
} }
.img-responsive { .img-responsive {
width: 100%; width: 100%;
height: auto; height: auto;
display: block; display: block;
} }
body { body {
font-family: 'Open Sans', sans-serif; font-family: 'Open Sans', sans-serif;
} }
h1 { h1 {
...@@ -72,9 +72,9 @@ h1 { ...@@ -72,9 +72,9 @@ h1 {
} }
p { p {
font-size: 16px; font-size: 16px;
line-height: 1.5em; line-height: 1.5em;
color: #333333; color: #333333;
} }
strong { strong {
...@@ -106,8 +106,8 @@ strong { ...@@ -106,8 +106,8 @@ strong {
.header-top { .header-top {
height: auto; height: auto;
} }
.logo-app { .logo-app {
...@@ -121,6 +121,10 @@ strong { ...@@ -121,6 +121,10 @@ strong {
margin:0 auto 2em auto; margin:0 auto 2em auto;
height: 360px; height: 360px;
overflow: hidden; overflow: hidden;
display: flex;
justify-content: center;
position: relative;
} }
...@@ -252,7 +256,7 @@ button.subirFoto { ...@@ -252,7 +256,7 @@ button.subirFoto {
} }
.btn-guardar { .btn-guardar {
cursor: pointer; cursor: pointer;
border: none; border: none;
border-radius: 6px; border-radius: 6px;
font-size: 1em; font-size: 1em;
...@@ -266,10 +270,10 @@ button.subirFoto { ...@@ -266,10 +270,10 @@ button.subirFoto {
width:100%; width:100%;
box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); box-shadow: 0 1px 2px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
transition: all 0.3s cubic-bezier(.25,.8,.25,1); transition: all 0.3s cubic-bezier(.25,.8,.25,1);
} }
.btn-guardar:hover { .btn-guardar:hover {
border:none; border:none;
...@@ -283,14 +287,13 @@ button.subirFoto { ...@@ -283,14 +287,13 @@ button.subirFoto {
font-size: 1em; font-size: 1em;
text-align: center; text-align: center;
font-weight: bold; font-weight: bold;
margin: 0.5em 0 1em 0; margin: 0.5em 0;
text-transform: uppercase; text-transform: uppercase;
color: #f5a800; color: #f5a800;
padding: 0.8em 1.2em; padding: 0.8em 1.2em;
} }
.container-c {
.contenedor-compara-fotos {
display: flex; display: flex;
flex-flow: row nowrap; flex-flow: row nowrap;
position: relative; position: relative;
...@@ -299,7 +302,22 @@ button.subirFoto { ...@@ -299,7 +302,22 @@ button.subirFoto {
margin-bottom: 1em; margin-bottom: 1em;
} }
.contenedor-compara-fotos div { .contenedor-compara-fotos {
display: flex;
flex-flow: row nowrap;
justify-content: center;
/* position: relative; */
z-index: 5;
margin-top: 2em;
margin-bottom: 1em;
}
.contenedor-compara-fotos div.camera {
margin-left:0;
margin-bottom:0;
}
.contenedor-compara-fotos{
margin:0 0.1em 1.5em 0.1em; margin:0 0.1em 1.5em 0.1em;
flex: 1; flex: 1;
} }
...@@ -308,7 +326,7 @@ button.subirFoto { ...@@ -308,7 +326,7 @@ button.subirFoto {
border:6px solid #f5a800; border:6px solid #f5a800;
background-color: #ffffff; background-color: #ffffff;
max-width: 480px; max-width: 480px;
margin:0 auto 2em auto; margin:0 auto 2em auto !important;
height: 360px; height: 360px;
} }
...@@ -365,11 +383,11 @@ button.subirFoto-adaptable { ...@@ -365,11 +383,11 @@ button.subirFoto-adaptable {
margin-right: 10px; margin-right: 10px;
} */ } */
.rrss-icons a { .rrss-icons a {
width: 45px; width: 250px;
height:45px; height: 50px;
display: block; display: block;
background: url("../images/face-icon.png") no-repeat; background: url("../images/face-icon.png") no-repeat;
background-size: 45px; background-size: 250px;
margin-left: 10px; margin-left: 10px;
} }
...@@ -402,97 +420,465 @@ div .txt-center { ...@@ -402,97 +420,465 @@ div .txt-center {
.fondo-adaptable { .fondo-adaptable {
margin-top: -120px; margin-top: -120px;
} }
.contenedor-compara-fotos { /* .contenedor-compara-fotos {
margin-top: -20em; margin-top: -20em;
} } */
img.desafio-inovage { img.desafio-inovage {
width: 250px; width: 250px;
} }
} }
/*** ALERT **********************************/
/*** MEDIA QUERIES ***/ .alert-box {
color:#555;
font-family:Tahoma,Geneva,Arial,sans-serif;
font-size:13px;
color: white;
padding:1.7em 40px;
margin:0 0;
@media(max-width:768px){ width:-webkit-fill-available;
/*position: absolute;*/
left:0;
display: flex;
flex-flow: row nowrap;
justify-content: center;
}
.alert-box span {
font-weight:bold;
text-transform:uppercase;
padding-right: 5px;
}
.error {
/*background:#ffecec;*/
background: #f5a800;
/* border:1px solid #f5aca6; */
}
.success {
/*background:#e9ffd9;*/
background: #f5a800;
/* border:1px solid #a6ca8a; */
}
.warning {
background:#fff8c4 url('images/warning.png') no-repeat 10px 50%;
/* border:1px solid #f2c779; */
}
.notice {
background:#e3f7fc url('images/notice.png') no-repeat 10px 50%;
/* border:1px solid #8ed9f6; */
}
img.desafio-inovage { .icp { margin-right:8px;
width: 250px; width: 16px;
height: 16px;
} }
.app-container {
margin: 0 auto;
padding: 0 1em;
.terminos-condiciones {
padding:1em 0;
margin: 0 auto 3em auto;
text-align: center;
} }
.container-datanombre { .terminos-condiciones a {
font-size: 0.8em;
color:#555555;
}
.terminos-condiciones a:hover {
font-size: 0.8em;
color:#f5a800;
}
.img-responsive {
width: 100%;
height: auto;
display: block;
}
/** MENU **/
.responsive-bar{
display: none;
z-index: 9999;
}
nav{
font-family: 'Cormorant', Georgia,"Times New Roman", serif;
text-transform: none;
position: fixed;
top: 0;
left: 0;
height: 100px;
width: 100%;
padding: 10px 100px;
box-sizing: border-box;
transition: .5s;
z-index: 999;
display: flex; display: flex;
flex-flow: column nowrap; justify-content: center;
} }
.grilla-datos { nav.black{
flex-flow: column nowrap; z-index: 9999;
background:#ffffff;
height: 80px;
padding: 10px 50px;
} }
.grilla-datos div:nth-child(1) { nav .logo{
text-align: center; float: left;
padding: 0 0 1em 0;
flex: 1;
} }
.grilla-datos div:nth-child(2) { nav .logo img{
text-align: center; height: 60px;
padding: 0 0 0 0; /* transition: .5s; */
flex: 1;
} }
.barra-comentario { nav.black .logo img{
height: 60px;
margin-bottom:1em; }
nav > ul{
/* width: 80%; */
margin: 0 0 0 6em;
padding: 0;
float: right;
}
nav > ul > li{
list-style: none;
display: inline-block;
}
nav > ul > li > a:hover{
/* background: #f00; */
color: #f5a801!important;
}
nav > ul > li > a{
color: rgba(0,0,0,.6);
text-decoration: none;
/* text-transform: uppercase; for capitalisation of letters */
line-height: 60px;
padding: 0 10px;
font-size: 19px;
transition: .5s;
}
nav.black > ul > li > a{
color: rgba(0,0,0,.6);
line-height: 60px;
} }
.logo-app { section.sec1{
max-width: 200px; width: 100%;
height: 100vh;
background: url(https://images.pexels.com/photos/276517/pexels-photo-276517.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940);
background-size: cover;
} }
.marco-foto { section.content{
margin: 0;
padding: 0;
font-size: 1.1em;
}
section.sec2{
width: 100%; width: 100%;
max-width: 320px; height: 100vh;
height: auto; background: url(https://images.pexels.com/photos/276517/pexels-photo-276517.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940);
min-height: 240px; background-size: cover;
overflow: hidden;
} }
.botonera-fotos div:nth-child(1) {
padding: 0 0.5em 0 0; @media(max-width:768px){
.responsive-bar{
display: block;
width: 100%;
height: 60px;
background-color: transparent;
position: fixed;
top: 0;
left: 0;
padding: 5px 20px;
box-sizing: border-box;
z-index: 9999;
}
.responsive-bar .logo img{
float: left;
height: 35px;
}
.responsive-bar .menu h4{
float: right;
color: #2ea3f2;
margin: 0;
padding: 0;
line-height: 50px;
cursor: pointer;
/* text-transform: uppercase; */
}
nav{
padding: 0;
}
nav,
nav.black{
background-color:transparent;
height: 60px;
padding: 0;
width: 100%;
}
nav .logo{
display: none;
}
nav ul{
position: absolute;
width: 100%;
top: 60px;
left: 0;
background: #262626;
float: none;
display: none;
}
nav ul.active{
display: block;
}
nav ul li{
width: 100%;
}
nav ul li a{
display: block;
padding: 0;
text-align: left;
line-height: 30px !important;
color: rgba(0,0,0,.6);
font-size: 19px;
padding: 10px 5%;
border-bottom: 1px solid rgba(0,0,0,.03);
}
nav > ul{
background:#ffffff;
border-top: 3px solid #2ea3f2;
width: 80%;
display: none;
margin: 0 5%;
padding: 5%;
box-shadow: 0 2px 5px rgba(0,0,0,.1);
-moz-box-shadow: 0 2px 5px rgba(0,0,0,.1);
-webkit-box-shadow: 0 2px 5px rgba(0,0,0,.1);
}
nav > ul > li{
display: block;
text-align: left;
}
.active{
display: block;
}
} }
.botonera-fotos div:nth-child(2) {
padding: 0 0 0 0.5em;
/*** MEDIA QUERIES ***/
@media (max-width: 1024px) and (orientation: landscape){ /* tablet and smaller */
body:after{
position: absolute;
z-index: 9999;
width: 100%;
height: 100%;
top: 0;
bottom: 0;
content: "";
background: #212121 url('../images/girar-dispositivo.jpg') 0 0 no-repeat; /* replace with an image that tells the visitor to rotate the device to landscape mode */
background-size: 100% auto;
opacity: 0.95;
}
} }
button.subirFoto, button.tomarFoto { /*
padding: 0.8em 1em; @media (max-width:980px){
font-size: 0.8em; body nav {
width: inherit;
}
}*/
@media(max-width:768px){
.contenedor-compara-fotos {
flex-flow: column nowrap;
}
.btn-guardar {
margin: 1em 0 3em 0;
}
.container-c {
z-index: 5;
margin-top: -8em;
}
img.desafio-inovage {
width: 250px;
}
.app-container {
margin: 0 auto;
padding: 0 1em;
}
.container-datanombre {
display: flex;
flex-flow: column nowrap;
}
.grilla-datos {
flex-flow: column nowrap;
}
.grilla-datos div:nth-child(1) {
text-align: center;
padding: 0 0 1em 0;
flex: 1;
}
.grilla-datos div:nth-child(2) {
text-align: center;
padding: 0 0 0 0;
flex: 1;
}
.barra-comentario {
margin-bottom:1em;
}
.logo-app {
max-width: 200px;
}
.marco-foto {
width: 100%;
/*max-width: 320px;*/
height: auto;
/*min-height: 240px;*/
overflow: hidden;
}
.botonera-fotos div:nth-child(1) {
padding: 0 0.5em 0 0;
}
.botonera-fotos div:nth-child(2) {
padding: 0 0 0 0.5em;
}
button.subirFoto, button.tomarFoto {
padding: 0.8em 1em;
font-size: 0.8em;
}
/*.contenedor-compara-fotos div {
margin: 0 auto;
width: 100%;
flex: 1;
}*/
.fondo-adaptable {
margin-top: -4em;
}
/* .contenedor-compara-fotos {
margin-top: -8em;
} */
.txt-foto-anterior {
font-size: 0.8em;
}
button.subirFoto-adaptable {
font-size: 0.8em;
margin:0 0 1em 0;
}
.alargador-marco-foto{
width: 100% !important;
height: auto !important;
}
} }
.contenedor-compara-fotos div { @media (max-width : 468px){
margin: 0 5px 0.8em 5px; .container-c{margin-top:-10em};
flex: 1;
} }
/* .camera{
max-height: 240px;
} */
.fondo-adaptable { .separador-marco-foto{
margin-top: -4em; /*width: 480px;*/
/*margin: 0 auto 2em auto;*/
/*height: 360px;*/
/*position: relative;*/
margin-left: 0.1em;
margin-right: 0.1em;
} }
.contenedor-compara-fotos {
margin-top: -8em; .alargador-marco-foto{
width: 100% !important;
height: auto !important;
} }
.txt-foto-anterior {
font-size: 0.8em; .img-marco{
border:6px solid #f5a800;
margin-bottom: 2em;
} }
button.subirFoto-adaptable { .img-marco-2{
font-size: 0.8em; border:6px solid #f5a800;
margin:0 0 1em 0;
} }
.contenedor-compara-fotos div.separador-marco-foto {
flex:1;
margin: 0 0.6em;
}
@font-face {
font-family: "dashicons";
src: url(data:application/x-font-woff;charset=utf-8;base64,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) format('woff'),
url(../fonts/dashicons.ttf) format("truetype"),
url(../fonts/dashicons.svg#dashicons) format("svg");
font-weight: normal;
font-style: normal;
}
.dashicons,
.dashicons-before:before {
display: inline-block;
font-size: 20px;
font-family: "dashicons";
text-decoration: inherit;
font-weight: normal;
vertical-align: middle;
font-style: normal;
text-align: left;
}
.dashicons-cart:before {
content: "\f174";
} }
.camera{
max-height: 240px;
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(2.22156,0,0,2.22156,80.6008,69.8371)">
<path d="M0,-14.436L-3.055,-14.436C-3.969,-14.436 -4.703,-15.175 -4.703,-16.082C-4.703,-16.994 -3.969,-17.733 -3.055,-17.733L0,-17.733C0.91,-17.733 1.65,-16.994 1.65,-16.082C1.65,-15.175 0.91,-14.436 0,-14.436M-18.629,2.303C-23.883,2.303 -28.148,-1.96 -28.148,-7.215C-28.148,-12.475 -23.883,-16.739 -18.629,-16.739C-13.369,-16.739 -9.104,-12.475 -9.104,-7.215C-9.104,-1.96 -13.369,2.303 -18.629,2.303M1.314,-19.771L-28.861,-19.771C-30.248,-19.771 -31.375,-18.647 -31.375,-17.261L-31.375,2.824C-31.375,4.211 -30.248,5.335 -28.861,5.335L1.316,5.335C2.703,5.335 3.826,4.211 3.826,2.824L3.826,-17.261C3.824,-18.647 2.703,-19.771 1.314,-19.771" style="fill:white;fill-rule:nonzero;"/>
</g>
<g transform="matrix(2.22156,0,0,2.22156,-1102.68,-1081.27)">
<rect x="504.793" y="494.958" width="7.219" height="2.619" style="fill:white;"/>
</g>
<g transform="matrix(-2.22156,0,0,2.22156,38.9989,63.8893)">
<path d="M0,-9.082C-2.506,-9.082 -4.539,-7.05 -4.539,-4.54C-4.539,-2.034 -2.506,0 0,0C2.506,0 4.539,-2.034 4.539,-4.54C4.539,-7.05 2.506,-9.082 0,-9.082" style="fill:white;fill-rule:nonzero;"/>
</g>
</svg>
web/manuel/images/face-icon.png

3.67 KB | W: | H:

web/manuel/images/face-icon.png

13.4 KB | W: | H:

web/manuel/images/face-icon.png
web/manuel/images/face-icon.png
web/manuel/images/face-icon.png
web/manuel/images/face-icon.png
  • 2-up
  • Swipe
  • Onion skin
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 45 45" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g id="Mesa-de-trabajo1" serif:id="Mesa de trabajo1" transform="matrix(1,0,0,1,-8,-4)">
<rect x="8" y="4" width="45" height="45" style="fill:none;"/>
<g transform="matrix(1,0,0,1,-1,0.5)">
<g>
<g transform="matrix(1.95,0,0,2.45,-28.95,-24.3437)">
<rect x="21" y="15" width="20" height="2" style="fill:rgb(67,174,247);"/>
</g>
<g transform="matrix(1.95,0,0,2.45,-28.95,-13.2)">
<rect x="21" y="15" width="20" height="2" style="fill:rgb(67,174,247);"/>
</g>
<g transform="matrix(1.95,0,0,2.45,-28.95,-2.0563)">
<rect x="21" y="15" width="20" height="2" style="fill:rgb(67,174,247);"/>
</g>
</g>
</g>
</g>
</svg>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment