Integração do Pentaho com o Ckan
Esta integração faz parte da interação e modificação de temas no CKAN.
Maiores detalhes podem ser encontrados na pagina: http://docs.ckan.org/en/latest/theming/index.html
Pré-requisitos
É necessário realizar a instalação do Pentaho anteriormente. A integração com o CKAN é feita através de "iframe" em paginas personalizadas no CKAN. Para isso é necessário entender a estrutura de paginas do CKAN. A próxima seção apresenta esta estrutura.
Estrutura de Paginas do CKAN
As paginas da raiz do CKAN estão no diretório "/ckan/lib/default/src/ckan/ckan/templates". As paginas HTML neste diretório ficam visíveis na raiz da URL do CKAN.
ckan/lib/default/src/ckan/ckan/templates |-- activity_streams | |-- activity_stream_email_notifications.text | `-- activity_stream_items.html |-- admin | |-- base.html | |-- config.html | |-- confirm_reset.html | |-- index.html | `-- trash.html |-- ajax_snippets | |-- api_info.html | |-- custom_fields.html | `-- follow_button.html |-- base.html |-- cedoc_footer.html |-- pagina-personalizada.html |-- css | |-- common.css | |-- demo.css | |-- imagem | | |-- CEDOC.png | | |-- archivematica.png | | |-- ckan.png | | |-- dspace.png | | |-- koha.png | | `-- ojs.png | |-- normalize.css | `-- style.css |-- dataviewer | |-- base.html | `-- snippets | |-- data_preview.html | `-- no_preview.html |-- development | |-- markup.html | |-- primer.html | `-- snippets | |-- actions.html | |-- breadcrumb.html | |-- context.html | |-- facet.html | |-- form.html | |-- form_stages.html | |-- list.html | |-- markup.html | |-- media_grid.html | |-- module.html | |-- nav.html | |-- page_header.html | |-- pagination.html | `-- simple-input.html |-- error_document_template.html |-- footer.html |-- group | |-- about.html | |-- activity_stream.html | |-- admins.html | |-- base_form_page.html | |-- confirm_delete.html | |-- confirm_delete_member.html | |-- edit.html | |-- edit_base.html | |-- followers.html | |-- history.html | |-- index.html | |-- member_new.html | |-- members.html | |-- new.html | |-- new_group_form.html | |-- read.html | |-- read_base.html | `-- snippets | |-- feeds.html | |-- group_form.html | |-- group_item.html | |-- group_list.html | |-- helper.html | |-- history_revisions.html | |-- info.html | `-- revisions_table.html |-- header.html |-- home | |-- about.html | |-- index.html | |-- layout1.html | |-- layout2.html | |-- layout3.html | `-- snippets | |-- about_text.html | |-- featured_group.html | |-- featured_organization.html | |-- promoted.html | |-- search.html | `-- stats.html |-- macros | |-- autoform.html | `-- form.html |-- organization | |-- about.html | |-- activity_stream.html | |-- admins.html | |-- base_form_page.html | |-- bulk_process.html | |-- confirm_delete.html | |-- confirm_delete_member.html | |-- edit.html | |-- edit_base.html | |-- index.html | |-- member_new.html | |-- members.html | |-- new.html | |-- new_organization_form.html | |-- read.html | |-- read_base.html | `-- snippets | |-- feeds.html | |-- help.html | |-- helper.html | |-- info.html | |-- organization_form.html | |-- organization_item.html | `-- organization_list.html |-- package | |-- activity.html | |-- base.html | |-- base_form_page.html | |-- confirm_delete.html | |-- confirm_delete_resource.html | |-- edit.html | |-- edit_base.html | |-- edit_view.html | |-- followers.html | |-- group_list.html | |-- history.html | |-- new.html | |-- new_package_form.html | |-- new_resource.html | |-- new_resource_not_draft.html | |-- new_view.html | |-- read.html | |-- read_base.html | |-- related_list.html | |-- resource_data.html | |-- resource_edit.html | |-- resource_edit_base.html | |-- resource_read.html | |-- resource_read.html.save | |-- resource_views.html | |-- resources.html | |-- search.html | |-- snippets | | |-- additional_info.html | | |-- data_api_button.html | | |-- history_revisions.html | | |-- info.html | | |-- new_package_breadcrumb.html | | |-- package_basic_fields.html | | |-- package_context.html | | |-- package_form.html | | |-- package_metadata_fields.html | | |-- resource_edit_form.html | | |-- resource_form.html | | |-- resource_help.html | | |-- resource_info.html | | |-- resource_item.html | | |-- resource_view.html | | |-- resource_view_embed.html | | |-- resource_view_filters.html | | |-- resource_views_list.html | | |-- resource_views_list_item.html | | |-- resources.html | | |-- resources_list.html | | |-- revisions_table.html | | |-- stages.html | | |-- tags.html | | |-- view_form.html | | |-- view_form_filters.html | | `-- view_help.html | `-- view_edit_base.html |-- page.html |-- revision | |-- __init__.py | |-- diff.html | |-- list.html | |-- read.html | |-- read_base.html | `-- snippets | `-- revisions_list.html |-- snippets | |-- activity_item.html | |-- additional_info.html | |-- context | | |-- dataset.html | | |-- group.html | | `-- user.html | |-- context.html | |-- custom_form_fields.html | |-- datapreview_embed_dialog.html | |-- datapusher_status.html | |-- debug.html | |-- disqus_trackback.html | |-- facet_list.html | |-- follow_button.html | |-- group.html | |-- group_item.html | |-- home_breadcrumb_item.html | |-- language_selector.html | |-- license.html | |-- local_friendly_datetime.html | |-- organization.html | |-- organization_item.html | |-- package_grid.html | |-- package_item.html | |-- package_list.html | |-- popular.html | |-- private.html | |-- related.html | |-- search_form.html | |-- search_result_text.html | |-- simple_search.html | |-- social.html | |-- sort_by.html | |-- subscribe.html | `-- tag_list.html |-- tag | `-- index.html |-- tests | |-- mock_json_resource_preview_template.html | `-- mock_resource_preview_template.html `-- user |-- activity_stream.html |-- dashboard.html |-- dashboard_datasets.html |-- dashboard_groups.html |-- dashboard_organizations.html |-- edit.html |-- edit_base.html |-- edit_user_form.html |-- followers.html |-- list.html |-- login.html |-- logout.html |-- logout_first.html |-- new.html |-- new_user_form.html |-- perform_reset.html |-- read.html |-- read_base.html |-- request_reset.html `-- snippets |-- followee_dropdown.html |-- followers.html |-- login_form.html |-- recaptcha.html `-- user_search.html
Código de Exemplo de uma pagina personalizada no CKAN
A seguir segue um exemplo de uma pagina personalizada com a utilização de um "iframe" para integrar outros sistemas nas paginas e no servidor do CKAN. Neste exemplo utilizamos o Pentaho instalado na mesma máquina (localhost).
- Nota
- É recomendado familiarizar-se com templates no modelo Jinja2, maiores detalhes podem ser encontrados em: http://jinja.pocoo.org/docs/2.9/templates/
{% extends "base.html" %} {% block subtitle %}{{ _('Pagina Personalizada') }}{% endblock %} {%- block page -%} {% block skip %} <div class="hide"><a href="#content">{{ _('Skip to content') }}</a></div> {% endblock %} {# Substitua o cabeçalho em uma página por página, estendendo esse bloco. Se estiver fazendo alterações no cabeçalho do site, é preferível substituir o arquivo header.html. #} {%- block header %} {% include "header.html" %} {% endblock -%} {# O bloco de conteúdo permite substituir o conteúdo da página, se necessário #} {%- block content %} {% block maintag %}<div role="main">{% endblock %} <div id="content" class="container" style="width: 1200px;"> {% block main_content %} {% block flash %} <div class="flash-messages"> {% block flash_inner %} {% for message in h.flash.pop_messages() | list %} <div class="alert fade in {{ message.category }}"> {{ h.literal(message) }} </div> {% endfor %} {% endblock %} </div> {% endblock %} {% block toolbar %} <div class="toolbar"> {% block breadcrumb %} {% if self.breadcrumb_content() | trim %} <ol class="breadcrumb"> {% snippet 'snippets/home_breadcrumb_item.html' %} {% block breadcrumb_content %} <li class="active"><a href="/pagina-personalizada">Pagina Personalizada</a></li> {% endblock %} </ol> {% endif %} {% endblock %} </div> {% endblock %} <div class="row wrapper{% block wrapper_class %}{% endblock %}{% if self.secondary()|trim == '' %} no-nav{% endif %}"> {# O bloco pré-primário pode ser usado para adicionar conteúdo antes da renderização das colunas de conteúdo principal da página. #} {% block pre_primary %} {% endblock %} {% block primary %} <article class="module"> <div class="module-content"> <h1>Pagina Personalizada</h1> <p>Alguma paragrafo de informação (pode-se utilizar o HTML aqui)</p> {# Exemplo de iframe: #} <iframe src="http://localhost/pentaho/"></iframe> </article> {% endblock %} {% block secondary %}{% endblock %} </div> {% endblock %} </div> </div> {% endblock -%} </div> {# Substitua o rodapé em uma página por página, estendendo esse bloco. Se fizer alterações no cabeçalho do site, é preferível substituir o arquivo footer.html-u. #} {%- block footer %} {% include "footer.html" %} {% endblock -%} {%- endblock -%} {%- block scripts %} {% resource 'base/main' %} {% resource 'base/ckan' %} {% if g.tracking_enabled %} {% resource 'base/tracking.js' %} {% endif %} {{ super() }} {% endblock -%}
Assim você será capaz de criar paginas personalizadas utilizando o mesmo tema aplicado no CKAN.