Instalando OpenElec Raspberry Pi 2



1. Fazer o Download da imagem do OpenElec

http://adf.ly/1UMivZ


2. Fazer o Download do Win32 Disk Imager

http://adf.ly/1UMixb


3. Coloque o Cartão Micro SD no Computador. Entre no CMD como adiministrador e digite os seguintes comandos.

diskpart
list disk

Verifique em qual Nº de Disco seu cartão está. Digite.

select disk "Numero do Disco"
clean
create partition primary
active
Format fs=fat32 quick
Assign
exit

4. Colocando a Imagem no cartão de memoria, depois de instalado o Win32 Disk Imager execute o selelecione a imagem que você já abaixou e clique em Write aguarde terminar remova o micro sd e coloqueo no raspberry.




Obs: Recomendo pausar o AD Block para abrir os links.

Configurando um Plugin (JodelJodel)


1) Configurando APP Controller cd src/cake/app/plugins/NOME_DO_SEU_PLUGIN gedit NOME_DO_SEU_PLUGIN_app_controller.php Adicione o seguinte codigo <?php class NOME_DO_SEU_PLUGINAppController extends AppController { var $layout = 'NOME_DO_SEU_PLUGIN'; var $layoutScheme = 'NOME_DO_SEU_PLUGIN'; var $componets = array( 'Typhographer.TypeLayoutSchemePicker' ); var $helpers = array( 'Typhographer.TypeDecorator' => array( 'name' => 'StyleFactory', 'receive_automatic_class' => true, 'receive_tools' => true, 'generate_automatic_classes' => false ), 'Typhographer.*TypeBrickLayer' => array( 'name' => 'Bl', 'receive_tools' => true ), 'JjUtils.Jodel', 'Corktile.Cork' // Utilizado Para o Contente Stream ) function beforeRender() { parent::beforeRender(); $this->TypeLayoutSchemePicker->pick('NOME_DO_SEU_PLUGIN'); } function beforeFilter() { parent::beforeFilter(); StatusBehavior::setGlobalActiveStatuses(array( 'publish_status' => array( 'active' => array( 'published' ), 'overwrite' => true, 'mergeWithCurrentActiveStatuses' = true ) )); } } Lebrece que não e nescessario feichar o php.
2) Configurando APP Model gedit NOME_DO_SEU_PLUGIN_app_model.php Adicione o seguinte codigo <?php class NOME_DO_SEU_PLUGINAppModel extends AppModel { var $actsAs = array('Containable'); } 3) Agora vamos criar o php dentro da pastas models cd models gedit INSTANCIA_NOME_DO_SEU_PLUGIN.php (Ex: pro_professional.php) Adicione o seuinte codigo <?php class INSTANCIA_NOME_DO_SEU_PLUGIN extends NOME_DO_SEU_PLUGINAppModel { var $name = 'INSTANCIA_NOME_DO_SEU_PLUGIN'; var $actsAs = array( 'Dashboard.DashDashboardable', 'Temp.TempTemp', 'JjMedia.StoredFileHolder' => array('img_id','cover_id'), 'Status.Status' => array('publishing_status'), 'ContentStream.CsContentStreamHolder' => array( 'streams' => array('content_id' => 'professional_content'), ) ); function createEmpty() { return $this->save( array('INSTANCIA_NOME_DO_SEU_PLUGIN' => array('publishing_status' => 'draft') ), array('validate' => false) ); } function getDashboardInfo($id) { $data = $this->find('first', array( 'conditions' => array($this->alias.'.id' => $id), 'contain' => array() )); if ($data == null) return null; $dashdata = array( 'dashable_id' => $data['INSTANCIA_NOME_DO_SEU_PLUGIN']['id'], 'dashable_model'=> $this->name, 'type' => 'NOME_DO_SEU_SITE', 'status' => $data['INSTANCIA_NOME_DO_SEU_PLUGIN']['publishing_status'], 'created' => $data['INSTANCIA_NOME_DO_SEU_PLUGIN']['created'], 'modified' => $data['INSTANCIA_NOME_DO_SEU_PLUGIN']['modified'], 'name' => $data['INSTANCIA_NOME_DO_SEU_PLUGIN']['name'] . ' ' . $data['INSTANCIA_NOME_DO_SEU_PLUGIN']['last_name'], 'info' => 'Resumo: ' . substr($data['INSTANCIA_NOME_DO_SEU_PLUGIN']['abstract'], 0, 100), 'idiom' => null ); return $dashdata; } } 4) Entre na views, elements Criar um elemento.ctp cd views/elementes gedit INSTANCIA_NOME_DO_SEU_PLUGIN.ctp (Ex: pro_professional.ctp) Adicione o Seguinte Codigo <?php switch ($type[0]) { case 'buro': switch ($type[1]) { case 'form': echo $this->Buro->sform(array(), array( 'model' => $fullModelName, 'callbacks' => array( 'onReject' => array( 'js' => '$("content").scrollTo(); showPopup("error");', 'contentUpdate' => 'replace' ), 'onSave' => array('js' => '$("content").scrollTo(); showPopup("notice")'), ) )); { echo $this->Buro->input( null, array('type' => 'hidden', 'fieldName' => 'id') ); echo $this->Buro->input( null, array( 'type' => 'text', 'fieldName' => 'name', 'label' => __d('professional', 'Nome', true), ) ); echo $this->Buro->input( null, array( 'type' => 'text', 'fieldName' => 'last_name', 'label' => __d('professional', 'Sobrenome', true), ) ); echo $this->Buro->input( null, array( 'type' => 'textarea', 'fieldName' => 'abstract', 'label' => __d('professional', 'Texto de Apresentação', true), ) ); //profile img { $error = $this->Form->error('INSTANCIA_NOME_DO_SEU_PLUGIN.img_id'); if ($error) echo $this->Bl->sdiv( array('class' => 'input buro input_text required error') ); echo $this->Buro->input( null, array( 'type' => 'image', 'fieldName' => 'img_id', 'label' => __d('professional', 'Foto', true), 'options' => array('version' => 'backstage_preview') ) ); if ($error) { echo $this->Form->error('INSTANCIA_NOME_DO_SEU_PLUGIN.img_id'); echo $this->Bl->ediv(); } } $contacts = $this->data['INSTANCIA_NOME_DO_SEU_PLUGIN']['contact']; echo $this->Buro->sinput( null, array( 'type' => 'super_field', 'label' => 'Contato', ) ); for ($i = 0; $i < count($contacts[0]); $i++) { echo $this->Bl->sdiv(array('class' => 'fields'),array()); echo $this->Buro->input( array( 'onchange' => 'AddFields(); return false', 'class' => 'title', 'value' => $contacts[0][$i], ), array( 'type' => 'text', 'fieldName' => 'INSTANCIA_NOME_DO_SEU_PLUGIN.contact_title.' . $i, 'label' => __d('professional', 'Titulo', true), ) ); echo $this->Buro->input( array( 'onchange' => 'AddFields(); return false', 'class' => 'contact', 'value' => $contacts[1][$i], ), array( 'type' => 'textarea', 'fieldName' => 'INSTANCIA_NOME_DO_SEU_PLUGIN.contact_value.' . $i, 'label' => __d('professional', 'Conteúdo', true), ) ); echo $this->Bl->ediv(); } echo $this->Bl->sdiv(array('class' => 'fields'),array()); echo $this->Buro->input( array( 'onchange' => 'AddFields(); return false;', 'class' => 'title', ), array( 'type' => 'text', 'fieldName' => 'INSTANCIA_NOME_DO_SEU_PLUGIN.contact_title.' . count($contacts[0]), 'label' => __d('professional', 'Titulo', true), ) ); echo $this->Buro->input( array( 'onchange' => 'AddFields(); return false;', 'class' => 'contact' ), array( 'type' => 'textarea', 'fieldName' => 'INSTANCIA_NOME_DO_SEU_PLUGIN.contact_value.' . count($contacts[0]), 'label' => __d('professional', 'Conteúdo', true), ) ); echo $this->Bl->ediv(); echo $this->Buro->einput(); echo $this->Html->scriptBlock(' function _(str) { return document.getElementsByClassName(str); } var copy, newCopy, fields = _("fields"); window.onload = function() { copy = fields[0].cloneNode(true); copy.childNodes[1].childNodes[2].value = ""; copy.childNodes[3].childNodes[2].childNodes[2]. value = ""; } function AddFields() { var superfield = _("superfield_container")[0]; var title = _("title"); var contact = _("contact"); for (var i = 0; i < title.length; i++) if (title[i].value == "" && contact[i].value == "") { console.log(fields[i]); superfield.removeChild(fields[i]); } if (title[--i].value != "" && contact[i].value != "") { newCopy = copy.cloneNode(true); i++; newCopy.childNodes[1].childNodes[2].name = "data[INSTANCIA_NOME_DO_SEU_PLUGIN][contact_title]["+ i +"]"; newCopy.childNodes[1].childNodes[2].value = ""; newCopy.childNodes[3].childNodes[2].childNodes[2].name = "data[INSTANCIA_NOME_DO_SEU_PLUGIN][contact_value]["+ i +"]"; newCopy.childNodes[3].childNodes[2].childNodes[2].value = ""; superfield.appendChild(newCopy); } } '); echo $this->Buro->submitBox(array(), array()); } echo $this->Buro->eform(); break; } break; }

Adicionando um novo Item no menu Admin (JodelJodel)


1) Após tem criado o plugin a ser utilizado entre no bootstrap.php cd src/cake/app/config/ gedit bootstrap.php 2) Procure por Configure::write('jj.modules', array( Logo Abaixo de um Entre e adicione o codigo seguinte 'NOME_DO_SEU_PLUGIN' => array( 'model' => 'NOME_DO_SEU_PLUGIN.NOME_IDENTICO_A_TABELA_DO_DB', //(Ex: ProProfessional) (Ex Tabela: pro_professionals) 'viewUrl' => false, 'humanName' => __d('NOME_DO_SEU_PLUGIN','NOME_DE_EXIBIÇÃO',true), 'plugged' => array('dashboard','backstage'), 'permissions' => array( 'delete' => array('backstage_delete_item'), 'edit_draft' => array('backstage_edit_draft'), 'edit_published' => array('backstage_edit_published'), 'create' => array('backstage_edit_draft'), 'edit_publishing_status' => array('backstage_edit_publishing_status'), 'view' => array('backstage_view_item') ) ), Obs: Note que todas as tabelas do banco de dados estão no plural porem quando vamos identificalas no model utilizamos no singular.
3) Agora iremos adicionar esse plugin em nossas Page_sections cd src/cake/app/plugins/page_sections/config gedit sections.php Procure por $sections = array( 'public_page' => array( Logo Abaixo procure por 'subSections' => array( Adicione o seguinte codigo 'NOME_DO_SEU_PLUGIN' => array( 'linkCaption' => __d('NOME_DO_SEU_PLUGIN','NOME_DE_EXIBIÇÃO', true), 'url' => array( 'plugin' => 'NOME_DO_SEU_PLUGIN', 'controller' => 'NOME_IDENTICO_A_TABELA_DO_DB', //(Ex: pro_profissional) 'action' => 'index' ) ),

Criando um Plugin no JodelJodel


1) Criando um plugin cd src/cake/app/plugins/ mkdir NOME_DO_SEU_PLUGIN (Ex: pie_video) 2) Criando os Controllers cd NOME_DO_SEU_PLUGIN (Ex: pie_video) mkdir controllers 3) Criando os Models mkdir Models 4) Criando as Views mkdir views 5) Entrando na pasta views crie uma pasta elements cd views mkdir elements 6) Criando meu APP Controlher
Voutando a raiz do seu plugin gedit NOME_DO_SEU_PLUGIN_app_controller.php Lembrando que todas as letras são minusculas e os espaços são preenchidos por " _ " underline
7) Criando meu APP Model Na propria raiz do seu plugin gedit NOME_DO_SEU_PLUGIN_app_model.php

Configuração JodelJodel


1)Para começar, precisa preparar o databases, criando as tabelas necessárias para a estruturado Jodel Jodel. Em docs/tools tem uma porção de scripts para rodar. Para começar, poderíamos rodar osseguintes: /content_stream/content_stream.sql ou /content_stream/core.sql /content_stream/pies.sql /cork_tiles/database/text_cork.sql /cork_tiles/database/cork_tile_core.sql /dashboard/database/script.sql /jj_media/table.sql /jj_users/database/users.sql 2)Depois, configurar o arquivo database.php do cake, indicando o banco de dados a ser usado. cd app/config cp database.php.default database.php 3) Configurar a Segurança de seu projeto sudo gedit app/config/core.php Procure Security.salt Altere o conteudo que esta dentro de Aspas por qualquer outro nome. 4) Criar pelo menos o usuário 'Super­usuario' para poder entrar na parte administrativa. Para isso, rodar o script: docs/tools/jj_users/scripts/creating_new_users.sh na pasta da consola do cake: cake/cake/console 5) Configuração Criar as pastas que tenham permissão de escritura: PROJETO/src/cake/app/tmp/cache/persistent/ PROJETO/src/cake/app/tmp/cache/models/ Comando Utulizado: chmod og+w NOME_DA_PASTA -R Criar também as pastas (ou dar permissões para www­data) para gerenciar o upload dos arquivos: PROJETO/src/cake/app/webroot/img/derivatives PROJETO/src/cake/app/webroot/media/filter PROJETO/src/cake/app/webroot/media/transfer Comando Ustilizado: chown www-data:www-data NOME_DA_PASTA -R

Instalando Git (Ubuntu 15.10)


1) Instalando Git sudo apt-get install -y git

Instalação do JodelJodel (Pagina Administrador)


1) Clonando JodelJodel cd Sites/ git clone https://github.com/prefacedesign/jodeljodel.git