Skip to content
Permalink
Browse files

CSS管理追加

  • Loading branch information...
nanasess committed Feb 12, 2019
1 parent d398ef9 commit 7994bd00de19399d7c6a8e22dd280791478b9435
@@ -30,6 +30,7 @@ composer.phar
!/html/template/default
!/html/template/install
/html/user_data/*
!/html/user_data/assets/css/customize.css
!/html/user_data/.gitkeep
/src/Eccube/Resource/config/*.dist.php
/tests/tmp/*
@@ -64,6 +64,9 @@ parameters:
page:
name: admin.content.page_management
url: admin_content_page
css:
name: admin.content.css_management
url: admin_content_css
block:
name: admin.content.block_management
url: admin_content_block
@@ -0,0 +1 @@
/* カスタマイズ用CSS */
@@ -0,0 +1,62 @@
<?php
/*
* This file is part of EC-CUBE
*
* Copyright(c) LOCKON CO.,LTD. All Rights Reserved.
*
* http://www.lockon.co.jp/
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Eccube\Controller\Admin\Content;
use Eccube\Controller\AbstractController;
use Eccube\Form\Type\Admin\MainEditType;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\Filesystem\Exception\IOException;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Form\Extension\Core\Type\FormType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
class CssController extends AbstractController
{
/**
* @Route("/%eccube_admin_route%/content/css", name="admin_content_css")
* @Template("@admin/Content/css.twig")
*/
public function index(Request $request)
{
$builder = $this->formFactory
->createBuilder(FormType::class)
->add('css', TextareaType::class, [
'required' => false
]);
$form = $builder->getForm();
$cssPath = $this->getParameter('eccube_html_dir').'/user_data/assets/css/customize.css';
if (file_exists($cssPath) && is_writable($cssPath)) {
$form->get('css')->setData(file_get_contents($cssPath));
}
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$fs = new Filesystem();
try {
$fs->dumpFile($cssPath, $form->get('css')->getData());
$this->addSuccess('admin.common.save_complete', 'admin');
} catch (IOException $e) {
$message = trans('admin.common.save_error');
$this->addError($message, 'admin');
log_error($message, [$cssPath, $e]);
}
}
return [
'form' => $form->createView()
];
}
}
@@ -923,6 +923,7 @@ admin.content.news_management: 新着情報管理
admin.content.file_management: ファイル管理
admin.content.layout_management: レイアウト管理
admin.content.page_management: ページ管理
admin.content.css_management: CSS管理
admin.content.block_management: ブロック管理
admin.content.cache_management: キャッシュ管理
admin.content.maintenance_management: メンテナンス管理
@@ -995,6 +996,7 @@ admin.content.page_meta_metatag_placeholder: |
<meta property="product:product_link" content="{{ url('product_detail', {'id': Product.id}) }}"/>
<meta property="product:retailer_title" content="{{ Product.name }}"/>
admin.content.page_file_name_exists: 同じファイル名のデータが存在しています。別のファイル名を入力してください。
admin.content.css__card_title: CSS設定
admin.content.block_name: ブロック名
admin.content.block__card_title: ブロック設定
admin.content.block_file_name: ファイル名
@@ -1525,6 +1527,7 @@ tooltip.content.page_source_code: テンプレートファイルを編集しま
tooltip.content.page_layout: このページに適用するレイアウトを選択します。
tooltip.content.page_meta: ページのMETAタグの内容を指定できます。
tooltip.content.page_meta_tags: 自由にMETAタグを追加できます。twig内で利用されている変数も利用できます。
tooltip.content.css_source_code: カスタマイズ用CSSファイルを編集します。CSSで記述します。
tooltip.content.block_name: ブロックの管理用名称です。
tooltip.content.block_file_name: このブロックの内容を記述したtwigテンプレートファイルの名前です。管理画面ではあとから変更できません。
tooltip.content.block_source_code: テンプレートファイルを編集します。twigで記述します。
@@ -0,0 +1,119 @@
{#
This file is part of EC-CUBE
Copyright(c) LOCKON CO.,LTD. All Rights Reserved.
http://www.lockon.co.jp/
For the full copyright and license information, please view the LICENSE
file that was distributed with this source code.
#}
{% extends '@admin/default_frame.twig' %}

{% set menus = ['content', 'css'] %}

{% block title %}{{ 'admin.content.css_management'|trans }}{% endblock %}
{% block sub_title %}{{ 'admin.content.contents_management'|trans }}{% endblock %}

{% block javascript %}
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.8/ace.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.8/ext-language_tools.js"></script>
<script>
ace.require('ace/ext/language_tools');
var editor = ace.edit('editor');
editor.session.setMode('ace/mode/css');
editor.setTheme('ace/theme/tomorrow');
editor.setValue('{{ form.css.vars.value|escape('js') }}');
editor.setOptions({
enableBasicAutocompletion: true,
enableSnippets: true,
enableLiveAutocompletion: true,
showInvisibles: true
});
var $save_button = $('#save-button');
editor.getSession().on("changeAnnotation", function(){
var annot = editor.getSession().getAnnotations();
for (var key in annot){
if (annot.hasOwnProperty(key)) {
console.log(annot[key]);
if (annot[key].type && annot[key].type == 'error') {
$save_button.prop('disabled', true);
break;
} else {
$save_button.prop('disabled', false);
}
}
}
if (typeof(annot) == 'object' && annot.length < 1) {
$save_button.prop('disabled', false);
}
});
$('#content_css_form').on('submit', function(elem) {
$('#form_css').val(editor.getValue());
});
</script>
{% endblock %}
{% block main %}
<form id="content_css_form" method="post" action="{{ url('admin_content_css') }}">
{{ form_widget(form._token) }}

<div class="c-contentsArea__cols">
<div class="c-contentsArea__primaryCol">
<div class="c-primaryCol">
<!-- ページ設定 -->
<div class="card rounded border-0 mb-4">
<div class="card-header">
<div class="row">
<div class="col-8"><span class="card-title">{{ 'admin.content.css__card_title'|trans }}</span></div>
<div class="col-4 text-right">
<a data-toggle="collapse" href="#pageDetail" aria-expanded="false" aria-controls="pageDetail">
<i class="fa fa-angle-up fa-lg"></i>
</a>
</div>
</div>
</div>
<div class="collapse show ec-cardCollapse" id="pageDetail">
<div class="card-body">
<!-- コード -->
<div class="row mb-2">
<div class="col-2">
<div class="d-inline-block" data-tooltip="true" data-placement="top" title="{{ 'tooltip.content.css_source_code'|trans }}">
<span>{{ 'admin.content.page_source_code'|trans }}</span><i class="fa fa-question-circle fa-lg ml-1"></i>
</div>
<span class="badge badge-primary ml-1">{{ 'admin.common.required'|trans }}</span>
</div>
<div class="col-10">
<div id="editor" style="height: 480px" class="form-control{{ has_errors(form.css) ? ' is-invalid' }}"></div>
<div style="display: none">{{ form_widget(form.css) }}</div>
{{ form_errors(form.css) }}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="c-conversionArea">
<div class="c-conversionArea__container">
<div class="row justify-content-between align-items-center">
<div class="col-6">
<div class="c-conversionArea__leftBlockItem">
<a class="c-baseLink" href="{{ url('admin_content_page') }}">
<i class="fa fa-backward" aria-hidden="true"></i>
<span>{{ 'admin.content.css_management'|trans }}</span>
</a>
</div>
</div>
<div class="col-6">
<div id="ex-conversion-action" class="row align-items-center justify-content-end">
<div class="col-auto">
<button id="save-button" class="btn btn-ec-conversion px-5" type="submit">{{ 'admin.common.registration'|trans }}</button>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
{% endblock %}
@@ -35,6 +35,7 @@ file that was distributed with this source code.
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
<link rel="stylesheet" href="//cdn.jsdelivr.net/jquery.slick/1.6.0/slick.css">
<link rel="stylesheet" href="{{ asset('assets/css/style.css') }}">
<link rel="stylesheet" href="{{ asset('assets/css/customize.css', 'user_data') }}">
{% block stylesheet %}{% endblock %}
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<script>

0 comments on commit 7994bd0

Please sign in to comment.
You can’t perform that action at this time.