Publicidade

marfegte

codigo javascript gerador de lista xml

Patrocínio:

eu tenho um codigo pra gera lista em xml
nao to conseguindo salva o codigo gerado no servidor e deixar ele gravado na tabela no site para editor

https://codepen.io/marfegte/pen/mWXzBG


index.html

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Gerador lista xml</title>
<link rel="stylesheet" type="text/css" media="all" href="generator.css" />
<script src="codigo.js" type="text/javascript"></script>
</head>
<body onload="init()">

		
		<h1><a href="http://playlist-generator.com/"></a>IPTV Gerador Lista xml</h1>
		<noscript><p id="no_javascript">IPTV Gerador Lista xml usado JavaScript</p></noscript>
		<form id="playlistform" action="" onsubmit="return false;">
			<table>
				<thead>
					<tr>
						<th>Titulo</th>
						<th>Link</th>
						<th>Thumbnail</th>
						<th>Fanart</th>
						<th>Info</th>
						
						<th><span class="desc" title="duration (in milliseconds)">Opção</span></th>
					</tr>
				</thead>
				<tbody id="playlist"></tbody>
			</table>
		</form>
		
		<p style="margin-top: 3em;">playlist.xml</p>

		<pre id="playlistcode"></pre>

</body>
</html>

codigo.js

var TYPE_TITLE = 0;
var TYPE_LINK = 1;
var TYPE_THUMBNAIL = 2;
var TYPE_FANART = 3;
var TYPE_INFO = 4;
var COUNT_COLUMNS = 6;

function htmlentities(str) {
	str = str.replace(/&/g, "&amp;");
	str = str.replace(/"/g, "&quot;");
	str = str.replace(/</g, "&lt;");
	str = str.replace(/>/g, "&gt;");
	return str;
}
function nl2br(str) {
	str = str.replace(/\n/g, "<br/>");
	return str;
}
function update() {
	var playlist = document.getElementById("playlist");
	var rows = playlist.getElementsByTagName("tr");	
	var code = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
	code += "  \n";	
	for (var index = 0; index < rows.length; index++) {
		var inputFields = rows[index].getElementsByTagName("input");		
		code += "    <item>\n";		
		for (var j = 0; j < inputFields.length; j++) {			
			var type = "";
			var value = inputFields[j].value;			
			switch (j) {
			case TYPE_TITLE:
				type = "title";
				break;
			case TYPE_LINK:
				type = "link";
				break;
			case TYPE_THUMBNAIL:
				type = "thumbnail";
				break;
			case TYPE_FANART:
				type = "fanart";
				break;
			case TYPE_INFO:
				type = "info";
				break;
			
			}
			
			if (type == "link" || value != "") {
				code += "      <" + type + ">" + htmlentities(value) + "</" + type + ">\n";
			}
			
		}		
		code += "    </item>\n";
		code += "    \n";
	}	
	document.getElementById("playlistcode").innerHTML = nl2br(htmlentities(code));
}

function updateTable() {
	$("#results").html('')
 
	
	var playlist = document.getElementById("playlist");
	var rows = playlist.getElementsByTagName("tr");	
	for (var index = 0; index < rows.length; index++) {
		var row = rows[index];
		var cols = row.getElementsByTagName("td");	
		var content = "<a href=\"#\" title=\"adicionar um novo\" onclick=\"addTrack(" + (index + 1) + "); return false;\">Adicionar</a> <a href=\"#\" title=\"remove this track\" onclick=\"removeTrack(" + index + "); return false;\">Apagar</a>";
		cols[cols.length - 1].innerHTML = content;
	}
}
function addTrack(index) {
	var playlist = document.getElementById("playlist");
	var rows = playlist.getElementsByTagName("tr");	
	var newRow = document.createElement("tr");
	for (var i = 0; i < COUNT_COLUMNS; i++) {
		var newColumn = document.createElement("td");		
		if (i < COUNT_COLUMNS - 1) {
			
			var inputField = document.createElement("input");
			inputField.setAttribute("type", "text");
			inputField.onchange = update;
			inputField.onkeyup = update;
			newColumn.appendChild(inputField);
		} else {			
			newColumn.setAttribute("class", "options");
		}		
		newRow.appendChild(newColumn);
	}
	
	if (index == rows.length) {
		playlist.appendChild(newRow);
	} else {
		playlist.insertBefore(newRow, rows[index]);
	}	
	updateTable();
	update();
}
function removeTrack(index) {
	var playlist = document.getElementById("playlist");
	var rows = playlist.getElementsByTagName("tr");
	
	if (rows.length > 1 && window.confirm("Tem certeza que deseja apagar?")) {
		playlist.removeChild(rows[index]);		
		updateTable();
		update();
	}
}

function init() {
	addTrack(0);
	document.getElementById("playlist").getElementsByTagName("tr")[0].getElementsByTagName("input")[0].value = "";
	update();
}

generator.css

body, td {
	font-family: Verdana, Arial, sans-serif;
	font-size: 10pt;
}

a {
	color: #0000ff;
}

a:hover {
	color: #6666ff;
}

#no_javascript {
	background-color: #cc0000;
	color: #ffffff;
	padding: 0.5em;
	border: 2px dashed #000000;
}

h1 {
	font-size: 150%;
	font-weight: bold;
}

h2 {
	margin-top: 1em;
	font-size: 120%;
	font-weight: bold;
}

table {
	width: 100%;
	margin-top: 1em;
}

th {
	font-size: 100%;
	font-weight: bold;
	text-align: center;
	background-color: #ccccff;
	padding: 0.1em 0.3em 0.1em 0.3em;
	border: 1px solid #aaaaff;
}

td {
	padding: 0;
	text-align: center;
	border: 1px solid #660000;
}

td input {
	width: 100%;
	height: 100%;
	border: 0;
	background-color: #ffffff;
}

td input:hover {
	background-color: #eeeeff;
}

td input:focus {
	background-color: #ddddff;
}

#playlistcode {
	background-color: #ccccff;
	padding: 0.3em;
	border: 1px solid #aaaaff;
	font-size: 10pt;
	font-family: "Courier New",Verdana,sans-serif;
}

.desc {
	border-bottom: 
}

.options {
	white-space: nowrap;
	background-color: #ccccff;
	padding: 0.3em;
	font-weight: bold;
	border: 1px solid #aaaaff;
	font-size: 10pt;
	text-align: center;
	font-family: "Verdana,sans-serif;
	
}

 

 

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

No console do navegador está dando alguma mensagem de erro?

Ou o erro está no envio para o servidor?

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!


Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.


Entrar Agora

  • Próximos Eventos

  • Conteúdo Similar

    • Por Sara Alves
      Olá amigos,
       
      Tenho a seguinte expressão
      produto@[a-zA-Z0-9]{10} A principio a expressão me ajuda, porém depois do arroba quando eu digito mais de 10 caracteres, ele continua aceitando, eu gostaria de saber como faço para limitar a quantidade aceitavel de caracteres depois do arroba, não está validando com menos de 10 caracteres, até ai ok, porém se eu colocar mais de 10 ele continua aceitando.

      Como faço para limitar em 10 o numero de caracteres?

      Obrigado.
    • Por sergionpinheiro
      Boa tarde galera, estou tentando fazer a validação de um campo dinâmico, mas estou tendo problemas. Ele funciona assim, tenho um campo chamado data e outro chamado código. Quando digito um código ele vai lá no banco e confere se o código digitado corresponde aquela data que eu validei, caso contrário, dá um erro. O problema é que o nome do input é codigo[], ou seja, ele trás um array. O problema está aí, segue o que já foi feito:
      <script type="text/javascript"> $(function(){ $("input[name='codigo[]']").blur(function(){ var codigo = $("input[name='codigo[]']").val(); $.post('check_dates',{codigo: codigo},function(data){ $('#resultado').html(data); if(data != 'Disponível') { $("input[name='codigo']").val('').focus(); } }); }); }); </script> Esse é o que valida o campo em tempo real, sem precisar dar refresh na página.
       
      <script type="text/javascript"> $(function() { $("#add_input").click(function() { var input = '<div class="control-group number"><br>'; input += ' <label class="col-sm-2 control-label">Código:</label>'; input += ' <div class="col-sm-6">'; input += ' <input name="codigo[]" type="text" class="form-control" placeholder="Código de barras" data-placement="top" onfocus required></div>'; input += ' <a href="#new_input" class="btn btn-danger del_row"><i class="fa fa-remove"></i></a></div>'; $("#codigos").append(input); return false; }); $('.del_row').live('click', function() { $(this).parent().remove(); }); }); </script> Esse é o que insere os campos dinâmicos.
       
      $sql_date = "SELECT * FROM tb_estoque_users WHERE EST_CODIGO = '".$_POST['codigo']."' AND DATE(EST_CADASTRO) != '".$_SESSION['date']."'"; $date = mysqli_query($link, $sql_date) or die(mysqli_error($link)); if(mysqli_num_rows($date) > 0 ) { echo "<script language:'javascript'>window.alert('Pacote inserido de outro dia!')</script>"; }else{ echo "Disponível"; }  
      Essa é a consulta.
       
      Ele até chega a validar no primeiro campo, mas nos outros não. Não sei onde está erro, agradeço a ajuda de vocês.
    • Por halfar
      Eu me lembro que há alguns tempos atrás vi um código em js que recuperava todas as propriedades e seus nomes de todos objetos.
       
      Por exemplo, supondo que em seu formulário voce tenha as seguintes divs:

       
       
       
      então a função percorre todo o formulário e retorna todos os nomes dos objetos e suas propriedades:
      retornaria algo maios ou menos assim: id=um, cor= green      id=dois, cor = red....etc
       
       
       
       
    • Por andscherer
      Atualmente utilizo em meus códigos JS, a seguinte estrutura.
       var ysQuery = (function ($, window, document, undefined) {
          'use-strict'
          // variáveis de acesso global
          var baseUrl = '';
          // Métodos de acesso restrito
          var Private = {},
          // Métodos de acesso público
          var Public = {}
          return Public
      }(Jquery, window, document));
      Gostaria de sugestões em relação a performance na utilização deste tipo de estrutura, e melhorias.
      Abraço