/* Nos códigos abaixo quando for alterar o conteúdo do editor (setá-lo) não se deve utilizar -->>$(tinymce.activeEditor.iframeElement).contents().find("body").html('
XXX
')<<-- pois o plugin "noneditable" não terá efeito dentro do conteúdo inserido. Portanto utilize -->>editor.setContent('
XXX
')<<--. */ function inserir_modelo_varias_publicacoes() {/* //Deve-se utilizar "margin:0px -50px" pois na tela de dispositivos móveis o "margin:0px 50px" do "div" que engloba o conteúdo das páginas internas acaba se somando à largura de "300px" dos blocos o que exigiria um tamanho de tela de pelo menos "400px" que é além da tela da maioria dos dispositivos móveis. editor.setContent('
CATEGORIA DESTA PÁGINA
Breve descrição da categoria desta página
pagina1;pagina2
'); */} function inserir_modelo_publicacao() {/* editor.setContent('
TÍTULO DA PÁGINA INTERNA
Insira aqui um resumo do conteúdo desta página que ajudará no posicionamento de seu site dentro do Google.
Publicado em
' + new Date().getDate() + ' de ' + new Date().getMonth().toString().replace("10","Novembro").replace("11","Dezembro").replace("0","Janeiro").replace("1","Fevereiro").replace("2","Março").replace("3","Abril").replace("4","Maio").replace("5","Junho").replace("6","Julho").replace("7","Agosto").replace("8","Setembro").replace("9","Outubro") + ' de ' + new Date().getFullYear() + '
4
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, nem ullam.
 
Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur.
 
Aui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur.
'); */} function inserir_modelo_varios_produtos() {/* editor.setContent('
NOME DA CATEGORIA DO PRODUTO
Ordenar preço
produto1;produto2
'); */} function inserir_produto() {/* editor.setContent('
AQUI DEVE VIR O TÍTULO DO PRODUTO
ESTE PRODUTO É OFERTADO ENQUANTO OS ESTOQUES DURAREM.
DETALHES DESTE PRODUTO
Aqui deve vir a descrição do produto de forma que seja bem clara e o mais resumida possível.
 
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum.
PREÇO: R$ 100,00
ADICIONE UMA VARIAÇÃO
INFORMAÇÕES ADICIONAIS
COMPOSIÇÃO: abes venenatis blandit lorem eu malesuada maecenas bibendum, ante sed semper.
FABRICAÇÃO: lorem eu malesuada venenatis blandit maecenas bibendum, venenatis bland itante sed semper blandit maecenas bibendum.
DIMENSÕES: 210 x 157 x 300 cm
GARANTIA: blandit lorem eu malesuada maecenas bibendum, ante sed sempe malesuada maecenas bibendum, ante sed sempe.
ORIGEM: lorem iprum eu malesuada maecenas bibendum, ante sed.
'); */}function executar_acao(url_arquivo) { if (acao == "inserir_imagem") { url_arquivo = url_arquivo.split("|"); if ($(tinymce.activeEditor.selection.getNode()).is("img")) { for (i=0;i'; } if ($(tinymce.activeEditor.iframeElement).contents().find("#galleria1").length == 0) { //tinymce.activeEditor.execCommand("mceInsertContent",false,'
 
' + temp + '
 
'); } else{ //$(tinymce.activeEditor.iframeElement).contents().find("#galleria1").append(temp); } } else if (acao == "enviar_arquivo_servidor") { prompt("Copie a URL do arquivo:",url_arquivo); } else if (acao == "inserir_player_musica") { url_arquivo = url_arquivo.split("|"); for (i=0;iSeu navegador não suporta reprodução de áudio.'); } } $("#overlay_arquivos_sendo_carregados,#carregando_arquivos,#processando_arquivos").css({display:"none"}); alert("Operação realizada com sucesso!"); } function remover_links_pais_filhos() { $(tinymce.activeEditor.iframeElement).contents().find("#abcdexyz").remove(); tinymce.activeEditor.selection.setContent('' + tinymce.activeEditor.selection.getContent() + ''); $(tinymce.activeEditor.iframeElement).contents().find("#abcdexyz").find("*").add($(tinymce.activeEditor.iframeElement).contents().find("#abcdexyz").parents()).each( function() { if ( ($(this).is("[onclick]")) && ($(this).attr("onclick").indexOf("abrir_link") != -1) ) { $(this).removeAttr("onclick"); } } ); } function executar_antes_iniciar_envio_arquivo() { if ($(".arquivo_ainda_nao_enviado").length == 0) { $("#overlay_arquivos_sendo_carregados,#carregando_arquivos").css({display:"block"}); $("#processando_arquivos").css({display:"none"}); $("#destino_saida_html_transferencia1").html(""); } } function executar_apos_finalizar_envio_arquivo() { if ($(".arquivo_ainda_nao_enviado").length == 0) { arquivos_carregados = new Array(); $("input[name='name_input_recebera_os_arquivos1']").each( function() { arquivos_carregados.push($(this).val().replace("http://www.mrqaulasdeingles.com.br/editor/","")); } ); if (arquivos_carregados.length > 0) { if (acao == "inserir_arquivo_como_link") { if (arquivos_carregados.length != 1) { $("#overlay_arquivos_sendo_carregados,#carregando_arquivos,#processando_arquivos").css({display:"none"}); alert("Você deve selecionar apenas um único arquivo para que seja criado um link para ele."); } else{ $("#frame").attr("src","editor/manipular_arquivos.php?arquivos_carregados=" + arquivos_carregados.join("|") + "&acao=" + acao + "&q_sistema_edicao=" + $(editor_atual.targetElm).attr("q_sistema_edicao")); } } else if ( (acao == "inserir_galeria_imagens") || (acao == "inserir_imagem") || (acao == "enviar_arquivo_servidor") || (acao == "inserir_player_musica") ) { $("#frame").attr("src","editor/manipular_arquivos.php?arquivos_carregados=" + arquivos_carregados.join("|") + "&acao=" + acao + "&q_sistema_edicao=" + $(editor_atual.targetElm).attr("q_sistema_edicao")); } $("#carregando_arquivos").css({display:"none"}); $("#processando_arquivos").css({display:"block"}); } else{ $("#overlay_arquivos_sendo_carregados,#carregando_arquivos,#processando_arquivos").css({display:"none"}); } } } function carregar_sistema_edicao() { var script = document.createElement("script"); script.src = "//cdn.tinymce.com/4/tinymce.min.js"; script.onload = function() { //Sites que possuem o plugin do Google Translate acabam recebendo "position:relative" na tag "body" e isso gera problemas na exibição do posicionamento do menu dropdown dos botões da "toolbar" do TinyMCE. $("body").css({position:"static"}); temp = function(){/* */}.toString().replace(new RegExp("(^[^*]*\\*|\\*[^*]*$)","g"),""); $("body").prepend(temp); script_sistema_upload_arquivo = document.createElement("script"); script_sistema_upload_arquivo.src = "editor/sistema_upload_arquivo.php"; document.documentElement.insertBefore(script_sistema_upload_arquivo,null); $("[q_sistema_edicao]").each( function() { //Em alguns elementos, como slideshow de imagens, a altura acaba sendo definida pelo script de geração do slideshow o que impede o elemento interno de expandir o conteúdo para facilitar a edição. Remove-se o atributo "id" para se evitar que outros plugins da página, como de slideshow, alterem o conteúdo do elemento que está sendo editado. $(this).css({height:"auto"}).attr({"id":""}); //Não sete a altura abaixo para -->>$(this).css("height")<<-- pois, caso o tamanho do conteúdo do iframe fique menor durante a edição (em comparação quando o conteúdo não é editado), o algoritmo que calcula a altura através do "setInterval" nunca reduzirá o tamanho, ele somente aumenta e se for necessário aumentar. O tamanho do conteúdo do iframe durante a edição pode ficar menor por vários motivos, sendo um deles quando se exibe modelos de produtos ou de postagens na página. $(this).html(''); } ); if (false) { } else{ tinymce.init({ selector: "textarea.q_sistema_edicao", language_url: "editor/pt_BR.js", content_css: "//cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.3.1/semantic.min.css,estilos.css,estilos_hack.css", //Faz com que o elemento pai padrão (quando não houver um elemento pai válido no esquema HTML utilizado pelo TinyMCE) seja um "div" e não um "p", que é o padrão no TinyMCE. Se setar para "" o elemento "br" será usado para pular linhas ao invés do elemento "div" que é bem mais apropriado. forced_root_block: "div", //O código abaixo faz com que o TinyMCE pare de converter a maioria dos caracteres especiais para sua respectiva entidade HTML. Deve-se utilizar esse código abaixo pois o TinyMCE por padrão, em situações especiais, converte o espaço em branco em " " o que faz com que strings como "Hoje comerei" sejam tratadas como sendo uma palavra inteira e isso impede que o navegador insira uma quebra de linha entre "Hoje" e "comerei" quando a largura da tela é menor que o tamanho dessa string - muito útil quando se acessa a página principal utilizando um celular já que as frases, contidas dentro do arquivo "entrada.php", precisam ser quebradas corretamente para caberem na tela. entity_encoding: "raw", //Por padrão o TinyMCE remove todos os elementos e atributos que não sejam padrões do esquema HTML utilizado ("html4" ou "html5"). Assim deve-se utilizar "*[*]" para fazer com que o TinyMCE mantenha todos os elementos HTML e seus atributos, ainda que não façam parte de um esquema HTML. Ou seja, se o elemento -->>XXX<<-- for inserido dentro do código-html ele não será removido. Também deve-se utilizar "#" em alguns elementos (como "div" e "p") para que, caso estes não possuam conteúdo, eles recebam " ". Isso é necessário pois os navegadores não pulam linhas quando encontram -->>
"<<--, de forma que se isso for substituído por -->>
 
<<-- as linhas serão puladas perfeitamente. Só há um bug nessa abordagem: o código HTML -->>
<<-- será substituído por -->>
 
<<-- o que não é desejável em algumas situações e é considerado um bug pois tecnicamente o elemento "div" nesse caso não está vazio, porém o TinyMCE o considera vazio e substitui seu conteúdo por " ". Não se deve utilizar "extended_valid_elements" ao invés de "valid_elements" pois utilizar "extended_valid_elements" apenas adiciona/modifica as regras setadas ao padrão das regras do TinyMCE, por outro lado "valid_elements" seta a regra padrão do próprio TinyMCE. valid_elements: "*[*],#div[*],#p[*]", //Por padrão o TinyMCE remove todos os elementos que, pela especificação do esquema HTML utilizado ("html4" ou "html5"), não possam ser pais de outros. Ou seja, pela especificação HTML4 e HTML5 um elemento "span" não pode ser "pai" de um elemento "div". Contudo em alguns casos precisa-se possuir um "span" como "pai" de um "div", porém isso faria com que o elemento "span" fosse removido (e seu conteúdo mantido) já que essa condição não pertence a nenhum esquema HTML suportado pelo TinyMCE. Assim deve-se utilizar a linha de código abaixo que fará a adição ("+") de regras ao padrão do esquema HTML utilizado pelo TinyMCE. Elementos que não possuam regras dentro do esquema HTML utilizado pelo TinyMCE serão mantidos intactos, ou seja, -->>
XXX
<<-- não sofrerá qualquer modificação. valid_children: "+span[div|h1|h2|p],+a[div|p],+button[div],+body[style],+div[style]", resize: false, menubar: false, statusbar: false, fontsize_formats: "6px 8px 10px 12px 14px 16px 18px 20px 25px 30px 35px 40px 45px 50px 55px 60px 65px 70px 75px 80px 85px 90px 95px 100px", plugins: ["code link print table textcolor image contextmenu paste lists" + (window.location.hostname != "localhost"?" noneditable":"")], toolbar1: "botao_salvar_pagina | botao_acoes | undo redo", toolbar2: "fontselect fontsizeselect botao_formatos | forecolor backcolor bold italic underline strikethrough removeformat", toolbar3: "alignleft aligncenter alignright alignjustify | numlist bullist | table | code | botao_ver_nome_pagina", //Seleciona os elementos a serem exibidos dentro de "contextmenu". contextmenu: "image | inserttable cell row column deletetable", //Adiciona a aba "Avançado" quando clica-se com o botão direito do mouse em cima da imagem e seleciona-se a opção "Insert image" somente quando o plugin "image" é utilizado. image_advtab: true, //A linha de código abaixo é a padrão para se exibir a lista de fontes caso ela não seja declarada, porém faz-se uso dela para que se possa adicionar a fonte "Raleway=raleway,sans-serif;" na lista de fontes. font_formats: "Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Raleway=raleway,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats", //O problema da linha de código abaixo é que ela habilita a conversão de tudo que for colado para plain text o que impede que esse recurso seja desabilitado para partes específicas do site. Poder-se-ia inserir o botão "pastetext" na toolbar pois ele permite alternar entre o modo normal e plain text porém o usuário precisa explicitamente clicar no botão para habilitar/desabilitar. Portanto a melhor alternativa mesmo, que permite maior controle, é utilizar o callback "paste_postprocess". //paste_as_text: true paste_postprocess: function(plugin,args) { //console.log(args.node); //$(args.node).find("div").remove(); //args.node.innerHTML += '
TESTE
'; //$(tinyMCE.activeEditor.getContent()).find(".titulo_produto") //Quando se cola algo contendo "