O Estudo
O Estudo Cidades Sustentáveis está sendo desenvolvido pelo CGEE para o Programa Tecnologias para Cidades Sustentáveis, da Secretaria de Ciência e Tecnologia para Inclusão Social (SECIS) do Ministério da Ciência, Tecnologia e Inovação (MCTI), com vistas ao desenvolvimento de uma estratégia de ação para o tema dentro do Ministério através da construção de uma agenda de CTI.
Objetivos
O Estudo tem como objetivo identificar potenciais papeis para o MCTI fomentar soluções de CTI à desafios atuais e futuros relacionados à cidades sustentáveis, bem como apontar possíveis passos para o desenho de políticas de CTI que levem em consideração o território e seu contexto. Nesse contexto, são sete os objetivos específicos:
- Definir um conceito de cidade sustentável operacional ao MCTI no seu Programa Tecnologias para Cidades Sustentáveis da SECIS;
- Identificar os principais desafios para que as cidades sejam mais sustentáveis;
- Mapear possíveis soluções aos principais desafios identificados, tanto atuais como futuros, para o desenvolvimento de cidades sustentáveis;
- Selecionar potenciais critérios para que o MCTI possa priorizar demandas e potenciais soluções a serem fomentadas ou induzidas;
- Pesquisar formas de se usar o contexto territorial como elemento para balizar políticas e investimentos de CTI;
- Propor uma agenda de CTI que aponte potenciais papeis para o MCTI fomentar soluções integradas em alinhamento com atores selecionados do SNCTI; e
- Dar subsídios para orientar o desenho e/ou implementação de políticas de CTI para alavancar uma estratégia de ação para o tema “cidades sustentáveis”.
Abordagem metodológica
O estudo foi realizado em cinco etapas, a saber:
- Etapa 1. Escopo do estudo: caracterização da demanda, definição de contornos e planejamento das atividades do estudo;
- Etapa 2. Diagnóstico: levantamento e análise de informações e de referências bibliográficas acerca de conceitos e dos desafios e soluções associadas para o desenvolvimento de cidades sustentáveis, bem como mapeamento de stakeholders;
- Etapa 3. Exploração de Alternativas: exercício criativo visando a construção de alternativas de futuro para identificar pressupostos antecipatórios e fomentar um debate acerca de desafios e soluções associadas, além de um conceito de cidade sustentável que seja apropriado ao MCTI e de possíveis papeis a serem fomentados pelo Ministério e atores selecionados do SNCTI;
- Etapa 4. Priorização: refinamento e validação dos achados nas três etapas anteriores, além da seleção de critérios de priorização a serem potencialmente usados pelo MCTI para fomentar soluções contextualizadas em alinhamento com atores selecionados do SNCTI; e
- Etapa 5. Recomendação: definição das ações a serem fomentadas pelo MCTI através da proposta de uma agenda de CTI.
Em cada Etapa foram realizadas diversas reuniões com o MCTI, objetivando analisar o progresso do estudo e indicar oportunidades de correção de rumo.
Equipe CGEE
Diretor Supervisor:
Antônio Galvão
Coordenador:
Cristiano Cagnin
Equipe:
Raiza Fraga, Beatriz Vilela, Ivone Oliveira e Katia de Alencar
Colaboradores:
Haroldo Torres e Maurício Broinizi
Vídeos
Sem publicações relacionadas
Sem produtos pactuados relacionados
Sem eventos relacionados
The following has evaluated to null or missing:
==> tempDDMFormFieldsReferencesMap["subtitle"] [in template "11501720881606#20120#PROJECT_RELATED_NEWS" at line 47, column 41]
----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: subtitleField = tempDDMFormFieldsRefe... [in template "11501720881606#20120#PROJECT_RELATED_NEWS" at line 47, column 25]
----
1<#assign
2 assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")
3 groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService")
4 vocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")
5/>
6
7<div class="news-home-wrapper d-flex">
8 <#assign
9 groupFriendlyURL = groupLocalService.getGroup(groupId?number).getFriendlyURL()
10 hasRelatedNews = false
11 />
12
13 <#if projectRelatedNews.getSiblings()?has_content>
14 <#list projectRelatedNews.getSiblings() as cur_projectRelatedNews>
15 <#assign
16 webContentData = jsonFactoryUtil.createJSONObject(cur_projectRelatedNews.getData())
17 />
18
19 <#if webContentData?? && webContentData.assetEntryId??>
20 <#assign
21 newsAssetEntryId = webContentData.assetEntryId
22 hasRelatedNews = true
23 />
24
25 <#if newsAssetEntryId?has_content>
26 <#assign
27 relatedAssetEntry = assetEntryLocalService.getEntry(getterUtil.getLong(newsAssetEntryId))
28 relatedAssetRenderer = relatedAssetEntry.getAssetRenderer()
29 newsCategory = []
30 />
31
32 <#-- Obter categorias do vocabulário "Categoria de Notícias" -->
33 <#list relatedAssetEntry.getCategories() as category>
34 <#assign vocabulary = vocabularyLocalService.getAssetVocabulary(category.vocabularyId) />
35 <#if vocabulary.getName()?lower_case == "categoria de notícias">
36 <#assign newsCategory = newsCategory + [category.getTitle(locale)] />
37 </#if>
38 </#list>
39
40 <#assign
41 tempDDMFormFieldValuesMap = relatedAssetRenderer.getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValuesMap()
42 tempDDMFormFieldsReferencesMap = relatedAssetRenderer.article.DDMStructure.DDMForm.getDDMFormFieldsReferencesMap(true)
43
44 entryCoverField = tempDDMFormFieldsReferencesMap["cover"].name
45 entryCoverJSON = jsonFactoryUtil.createJSONObject(tempDDMFormFieldValuesMap[entryCoverField][0].getValue().getString(locale))
46
47 subtitleField = tempDDMFormFieldsReferencesMap["subtitle"].name
48 subtitle = tempDDMFormFieldValuesMap[subtitleField][0].getValue().getString(locale)
49
50 dateField = tempDDMFormFieldsReferencesMap["date"].name
51 dateValue = tempDDMFormFieldValuesMap[dateField][0].getValue().getString(locale)
52 date = dateUtil.parseDate("yyyy-MM-dd", dateValue, locale)
53
54 displayPageUrl = "/web" + groupFriendlyURL + "/w/" + relatedAssetRenderer.getUrlTitle()
55 />
56
57 <a class="news-card btn-outline-primary p-4 text-decoration-none text-left" href="${displayPageUrl}">
58 <div class="news-card-category d-flex flex-row flex-wrap align-items-center mb-2">
59 <#if newsCategory?size gt 0>
60 <#list newsCategory as categoryName>
61 <span class="category-badge etiqueta-pequena text-uppercase text-primary-darken">
62 ${categoryName}
63 </span>
64 </#list>
65 <#else>
66 <span class="category-badge bg-transparent etiqueta-pequena text-uppercase text-primary-darken">
67 <@liferay.language key="no-category" />
68 </span>
69 </#if>
70 </div>
71
72 <#if entryCoverJSON.url?has_content>
73 <div class="news-card-image-wrapper overflow-hidden">
74 <img class="w-100 h-100" alt="${entryCoverJSON.alt!'article'}" src="${entryCoverJSON.url}" />
75 </div>
76 </#if>
77
78 <div class="news-card-body">
79 <h3 class="news-card-title text-primary-darken mt-2">
80 ${webContentData.title}
81 </h3>
82
83 <span class="text-uppercase text-primary-darken etiqueta-pequena-leve mb-2">
84 ${dateUtil.getDate(date, "d", locale)}
85 <@liferay.language key="of" />
86 ${dateUtil.getDate(date, "MMMM, yyyy", locale)}
87 </span>
88
89 <div class="news-card-description-wrapper text-primary-darken corpo-pequeno">
90 <p>${subtitle}</p>
91 </div>
92 </div>
93 </a>
94 </#if>
95 </#if>
96 </#list>
97 </#if>
98
99 <#if !hasRelatedNews>
100 <h2 class="my-4 px-4"><@liferay.language key="no-related-news" /></h2>
101 </#if>
102</div>
103
104<style>
105 .news-home-wrapper {
106 background-color: var(--secondaryLightColor, #FFFFF6);
107 overflow-x: auto;
108 }
109
110 .news-home-wrapper .news-card:first-child {
111 border-left: 1px solid var(--body-bg);
112 }
113
114 .news-home-wrapper .news-card {
115 border-right: 1px solid var(--body-bg);
116 max-width: 25rem;
117 }
118
119 .news-home-wrapper .news-card .news-card-category {
120 gap: 1rem;
121 }
122
123 .news-home-wrapper .news-card .news-card-image-wrapper {
124 height: 9rem;
125 border-radius: 32px;
126 }
127
128 .news-home-wrapper .news-card .news-card-image-wrapper img {
129 object-fit: cover;
130 }
131
132 .news-home-wrapper .news-card-image-wrapper:has(img:not([src])),
133 .news-home-wrapper .news-card-image-wrapper:has(img[src=""]) {
134 display: none;
135 }
136
137 .news-home-wrapper .news-card .news-card-image-wrapper img:not([src]),
138 .news-home-wrapper .news-card .news-card-image-wrapper img[src=""] {
139 display: none;
140 }
141
142 .news-home-wrapper .news-card .news-card-body .news-card-title a,
143 .news-home-wrapper .news-card .news-card-body .news-card-title a:hover {
144 color: var(--primaryDarkenColor);
145 }
146
147 .news-home-wrapper .news-card .news-card-body .news-card-description-wrapper {
148 display: -webkit-box;
149 line-clamp: 3;
150 -webkit-line-clamp: 3;
151 -webkit-box-orient: vertical;
152 overflow: hidden;
153 }
154
155 @media screen and (max-width: 768px) {
156 .news-home-wrapper {
157 overflow-x: scroll;
158 }
159
160 .news-home-wrapper .news-card {
161 min-width: 17.5rem;
162 width: 85%;
163 }
164 }
165</style>