顯示具有 CKFinder 標籤的文章。 顯示所有文章
顯示具有 CKFinder 標籤的文章。 顯示所有文章

2020年9月17日 星期四

[研究][ASP.NET][WebForm] CKFinder 3.5.1.1 + CKFinder.Connector.Sample 3.3.0-rc5 + ckeditor 4.15.0 試用

[研究][ASP.NET][WebForm] CKFinder 3.5.1.1 + CKFinder.Connector.Sample 3.3.0-rc5 + ckeditor 4.15.0 試用

2020-09-17

續這篇

[研究] CKSource.CKFinder 3.5.1.1試用 (NuGet 安裝)

http://shaurong.blogspot.com/2020/09/cksourceckfinder-3511-nuget.html

NuGet 安裝 ckeditor full 4.15.0


專案添加 Default.aspx

Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script src="Scripts/ckeditor/ckeditor.js"></script>
    <script src="CKFinderScripts/ckfinder.js"></script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine" Height="200px" Width="200px"></asp:TextBox><br />
            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" Style="height: 21px" /><br />
            <br />
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            <%--操作 TextBox1 的 JavaScript 必須寫在該 Id 物件之下,不能寫 <head></head>區域--%>
            <script type="text/javascript">
                // https://ckeditor.com/docs/ckfinder/ckfinder3-net/integration.html#integration_embedding
                //var editor = CKEDITOR.replace('TextBox1');
                // 參考 https://ckeditor.com/docs/ckfinder/ckfinder3/#!/guide/dev_ckeditor
                var editor = CKEDITOR.replace('TextBox1',
                    {
                        // 參考  https://ckeditor.com/docs/ckfinder/ckfinder3-net/integration.html
                        filebrowserBrowseUrl: '/CKFinderScripts/ckfinder.html',
                        filebrowserImageBrowseUrl: '/CKFinderScripts/ckfinder.html?type=Images',
                        // 下面失敗,待研究
                        //filebrowserUploadUrl: '/CKFinderScripts/connector?command=QuickUpload&type=Files',
                        //filebrowserImageUploadUrl: '/CKFinderScripts/connector?command=QuickUpload&type=Images'
                        // 下面失敗,待研究
                        filebrowserUploadUrl: '/CKFinderScripts/connector?command=QuickUpload&type=Files&currentFolder=/userfiles/',
                        filebrowserImageUploadUrl: '/CKFinderScripts/connector?command=QuickUpload&type=Images&currentFolder=/userfiles/'
                    });
                CKFinder.setupCKEditor(editor);
            </script>
        </div>
    </form>
</body>
</html>


Default.aspx.cs
using System;

namespace WebApplication1
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void Button1_Click(object sender, EventArgs e)

        {

        }
    }
}

執行 Default.aspx








部分功能正常可用了,部分待研究。

(完)

相關

[研究][ASP.NET][WebForm] CKFinder 3.5.1.1 + CKFinder.Connector.Sample 3.3.0-rc5 + ckeditor 4.15.0 試用
https://shaurong.blogspot.com/2020/09/aspnetwebform-ckfinder-3511.html

[研究] CKSource.CKFinder 3.5.1.1試用 (NuGet 安裝)
https://shaurong.blogspot.com/2020/09/cksourceckfinder-3511-nuget.html

[研究] CKSource.CKFinder.Connector.Sample 3.3.0-rc5 試用 (NuGet)
https://shaurong.blogspot.com/2020/09/cksourceckfinderconnectorsample-330-rc5.html

[研究][ASP.NET][WebForm]CKFinder 3.5.11 試用(Zip安裝)(二)
https://shaurong.blogspot.com/2020/09/aspnetwebformckfinder-3511-zip_3.html

[研究][ASP.NET][WebForm]CKFinder 3.5.11 試用(Zip安裝)
https://shaurong.blogspot.com/2020/09/aspnetwebformckfinder-3511-zip.html

[研究][ASP.NET][WebForm] CKSource.CKFinder.Connector.Config 3.5.11 安裝 (NuGet安裝)
https://shaurong.blogspot.com/2020/09/aspnetwebform-cksourceckfinderconnector.html

[研究] CKSource.CKFinder 3.5.1.1試用 (NuGet 安裝)

[研究] CKSource.CKFinder 3.5.1.1試用 (NuGet)

2020-09-17





********************************************************************************
解決方法: 

使用下面指令安裝

Install-Package CKSource.CKFinder.Connector.Sample -Version 3.3.0-rc5




再次點選 full-page-open.html
按下 F5 執行


執行成功,測試上傳成功。

********************************************************************************

和下面這篇相比

[研究] CKSource.CKFinder.Connector.Sample 3.3.0-rc5 試用 (NuGet)

http://shaurong.blogspot.com/2020/09/cksourceckfinderconnectorsample-330-rc5.html

NuGet 先安裝 CKSource.CKFinder.Connector.Sample 3.3.0-rc5,再安裝 CKSource.CKFinder 3.5.1.1,Startup.cs 要修改才能正常運作。 

NuGet 先安裝 CKSource.CKFinder 3.5.1.1,再安裝 CKSource.CKFinder.Connector.Sample 3.3.0-rc5,Startup.cs 不用修改就能正常運作。但較不建議,因為未來若升級到 CKEditor,仍˙會碰到 Startup.cs 要修改情況,不太可能每次升級 CKEditor 後,又再安裝一次 3.3.0-rc5 版。

希望CKFinder能再改善和 CKEditor程式搭配和文件說明的各種問題。

(完)


2020年9月15日 星期二

[研究] CKSource.CKFinder.Connector.Sample 3.3.0-rc5 試用 (NuGet)

[研究] CKSource.CKFinder.Connector.Sample 3.3.0-rc5 試用 (NuGet)

2020-09-15

CKSource.CKFinder 目前最新到 3.5.1.1,CKSource.CKFinder.Connector.Sample 最新只到 3.3.0-rc5。

參考

CKSource.CKFinder.Connector.Sample 3.3.0-rc5

https://packages.nuget.org/packages/CKSource.CKFinder.Connector.Sample/3.3.0-rc5

使用下面指令安裝

Install-Package CKSource.CKFinder.Connector.Sample -Version 3.3.0-rc5





可以正常執行。

********************************************************************************
使用 NuGet 把所有元件升級到最新,CKFinder 會被升級到 3.5.1.1版本。
點選 full-page-open.html,按下 F5執行,會出現錯誤。
顯示 3.3.0-rc5 和 3.5.1.1 版可能不相容。

CKSource.CKFinder.Connector.Core.Exceptions.InvalidConfigException: 'Configuration error: 'type' 屬性未宣告。'

CKSource.CKFinder.Connector.Core.Exceptions.InvalidConfigException

  HResult=0x80131500

  Message=Configuration error: 'type' 屬性未宣告。

  Source=<無法評估例外狀況來源>

  StackTrace: 

<無法評估例外狀況堆疊追蹤>

內部例外狀況 1:

XmlSchemaValidationException: 'type' 屬性未宣告。

********************************************************************************

參考這裡

https://ckeditor.com/docs/ckfinder/ckfinder3-net/configuration_by_code.html

修改 Startup.cs 檔案內容如下:

[assembly: Microsoft.Owin.OwinStartup(typeof(WebApplication2.Startup))]

namespace WebApplication2
{
    using System.Configuration;

    using CKSource.CKFinder.Connector.Config;
    using CKSource.CKFinder.Connector.Core.Builders;
    using CKSource.CKFinder.Connector.Core.Logs;
    using CKSource.CKFinder.Connector.Host.Owin;
    using CKSource.CKFinder.Connector.Logs.NLog;
    using CKSource.CKFinder.Connector.KeyValue.EntityFramework;
    using CKSource.FileSystem.Dropbox;
    using CKSource.FileSystem.Local;

    using Microsoft.Owin.Security;
    using Microsoft.Owin.Security.Cookies;

    using Owin;
    using CKSource.CKFinder.Connector.Core.Acl;
    using CKSource.CKFinder.Connector.Core;
    using System.Collections.Generic;
    using CKSource.CKFinder.Connector.Core.Authentication;
    using System.Threading.Tasks;
    using System.Threading;

    public class Startup
    {
        //public void Configuration(IAppBuilder builder)
        //{
        //    LoggerManager.LoggerAdapterFactory = new NLogLoggerAdapterFactory();

        //    RegisterFileSystems();

        //    builder.UseCookieAuthentication(new CookieAuthenticationOptions
        //    {
        //        AuthenticationType = "ApplicationCookie",
        //        AuthenticationMode = AuthenticationMode.Active
        //    });

        //    var route = ConfigurationManager.AppSettings["ckfinderRoute"];
        //    builder.Map(route, SetupConnector);
        //}

        //private static void RegisterFileSystems()
        //{
        //    FileSystemFactory.RegisterFileSystem<LocalStorage>();
        //    FileSystemFactory.RegisterFileSystem<DropboxStorage>();
        //}

        //private static void SetupConnector(IAppBuilder builder)
        //{
        //    var keyValueStoreProvider = new EntityFrameworkKeyValueStoreProvider("CacheConnectionString");

        //    var allowedRoleMatcherTemplate = ConfigurationManager.AppSettings["ckfinderAllowedRole"];
        //    var authenticator = new RoleBasedAuthenticator(allowedRoleMatcherTemplate);

        //    var connectorFactory = new OwinConnectorFactory();
        //    var connectorBuilder = new ConnectorBuilder();
        //    var connector = connectorBuilder
        //        .LoadConfig()
        //        .SetAuthenticator(authenticator)
        //        .SetRequestConfiguration(
        //            (request, config) =>
        //            {
        //                config.LoadConfig();
        //                config.SetKeyValueStoreProvider(keyValueStoreProvider);
        //            })
        //        .Build(connectorFactory);

        //    builder.UseConnector(connector);
        //}

        public ConnectorBuilder ConfigureConnector()
        {
            var connectorBuilder = new ConnectorBuilder();
            connectorBuilder
                .SetRequestConfiguration(
                    (request, config) =>
                    {
                        config.AddProxyBackend("local", new LocalStorage(@"MyFiles"));
                        config.AddResourceType("Files", resourceBuilder => resourceBuilder.SetBackend("local", "files"));
                        config.AddAclRule(new AclRule(
                            new StringMatcher("*"), new StringMatcher("/"), new StringMatcher("*"),
                            new Dictionary<Permission, PermissionType>
                            {
                        { Permission.FolderView, PermissionType.Allow },
                        { Permission.FolderCreate, PermissionType.Allow },
                        { Permission.FolderRename, PermissionType.Allow },
                        { Permission.FolderDelete, PermissionType.Allow },

                        { Permission.FileView, PermissionType.Allow },
                        { Permission.FileCreate, PermissionType.Allow },
                        { Permission.FileRename, PermissionType.Allow },
                        { Permission.FileDelete, PermissionType.Allow },

                        { Permission.ImageResize, PermissionType.Allow },
                        { Permission.ImageResizeCustom, PermissionType.Allow }
                            }));
                    })
                .SetAuthenticator(new MyAuthenticator());

            return connectorBuilder;
        }
        public class MyAuthenticator : IAuthenticator
        {
            public Task<IUser> AuthenticateAsync(ICommandRequest commandRequest, CancellationToken cancellationToken)
            {
                var user = new User(true, null);
                return Task.FromResult((IUser)user);
            }
        }
        public void Configuration(IAppBuilder appBuilder)
        {
            var connectorBuilder = ConfigureConnector();
            var connector = connectorBuilder.Build(new OwinConnectorFactory());
            appBuilder.Map("/CKFinder/connector", builder => builder.UseConnector(connector));
        }
    }
}


執行結果如下


packages.config 
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Autofac" version="5.2.0" targetFramework="net472" />
  <package id="CKSource.CKFinder" version="3.5.1.1" targetFramework="net472" />
  <package id="CKSource.CKFinder.Connector.Config" version="3.5.1.1" targetFramework="net472" />
  <package id="CKSource.CKFinder.Connector.Core" version="3.5.1.1" targetFramework="net472" />
  <package id="CKSource.CKFinder.Connector.Host.Owin" version="3.5.1.1" targetFramework="net472" />
  <package id="CKSource.CKFinder.Connector.KeyValue.EntityFramework" version="3.5.1.1" targetFramework="net472" />
  <package id="CKSource.CKFinder.Connector.Logs.NLog" version="3.5.1.1" targetFramework="net472" />
  <package id="CKSource.CKFinder.Connector.Sample" version="3.3.0-rc5" targetFramework="net472" developmentDependency="true" />
  <package id="CKSource.FileSystem" version="1.1.2" targetFramework="net472" />
  <package id="CKSource.FileSystem.Dropbox" version="1.1.2" targetFramework="net472" />
  <package id="CKSource.FileSystem.Local" version="1.1.2" targetFramework="net472" />
  <package id="Dropbox.Api" version="3.1.1" targetFramework="net472" />
  <package id="EntityFramework" version="6.1.3" targetFramework="net472" />
  <package id="EntityFramework.SqlServerCompact" version="6.1.3" targetFramework="net472" />
  <package id="ImageProcessor" version="2.8.0" targetFramework="net472" />
  <package id="Microsoft.Bcl" version="1.1.10" targetFramework="net472" />
  <package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="net472" />
  <package id="Microsoft.Bcl.AsyncInterfaces" version="1.1.0" targetFramework="net472" />
  <package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net472" />
  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.1" targetFramework="net472" />
  <package id="Microsoft.Net.Http" version="2.2.29" targetFramework="net472" />
  <package id="Microsoft.Owin" version="3.0.1" targetFramework="net472" />
  <package id="Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net472" />
  <package id="Microsoft.Owin.Security" version="3.0.1" targetFramework="net472" />
  <package id="Microsoft.Owin.Security.Cookies" version="3.0.1" targetFramework="net472" />
  <package id="Microsoft.SqlServer.Compact" version="4.0.8876.1" targetFramework="net472" />
  <package id="Newtonsoft.Json" version="8.0.3" targetFramework="net472" />
  <package id="NLog" version="4.3.2" targetFramework="net472" />
  <package id="Owin" version="1.0" targetFramework="net472" />
  <package id="Pri.LongPath" version="2.0.40" targetFramework="net472" />
  <package id="RestSharp" version="105.2.3" targetFramework="net472" />
  <package id="System.Net.Http" version="4.0.0" targetFramework="net472" />
  <package id="System.Net.Http.Formatting.Extension" version="5.2.3.0" targetFramework="net472" />
  <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="net472" />
  <package id="System.Threading.Tasks.Extensions" version="4.5.2" targetFramework="net472" />
  <package id="System.ValueTuple" version="4.5.0" targetFramework="net472" />
</packages>

(完)

2020年9月3日 星期四

[研究][ASP.NET][WebForm]CKFinder 3.5.11 + CKEditor 試用(Zip安裝)(二)

[研究][ASP.NET][WebForm]CKFinder 3.5.11 + CKEditor 試用(Zip安裝)(二)

2020-09-03

注意,CKFinder是付費套件,免費版會不定時跳出 Demo Version 訊息。

續這篇

[研究][ASP.NET][WebForm]CKFinder 3.5.11 試用(Zip安裝)

https://shaurong.blogspot.com/2020/09/aspnetwebformckfinder-3511-zip.html








Default.aspx 內容如下

********************************************************************************

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="CKSource.CKFinder.Connector.WebApp.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    <title></title>

    <script src="Scripts/ckeditor/ckeditor.js"></script>

    <script src="CKFinderScripts/ckfinder.js"></script>

</head>

<body>

    <form id="form1" runat="server">

        <div>

            <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine" Height="200px" Width="200px"></asp:TextBox><br />

            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" style="height: 21px" /><br />

            <br />

            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

            <%--操作 TextBox1 的 JavaScript 必須寫在該 Id 物件之下,不能寫 <head></head>區域--%>

            <script type="text/javascript">

                // https://ckeditor.com/docs/ckfinder/ckfinder3-net/integration.html#integration_embedding

                var editor = CKEDITOR.replace('TextBox1');

                CKFinder.setupCKEditor(editor);

            </script>

        </div>

    </form>

</body>

</html>

********************************************************************************
Default.aspx.cs 內容如下

********************************************************************************

using System;

namespace CKSource.CKFinder.Connector.WebApp

{

    public partial class Default : System.Web.UI.Page

    {

        protected void Page_Load(object sender, EventArgs e)

        {

        }

        protected void Button1_Click(object sender, EventArgs e)

        {

        }

    }

}

********************************************************************************

********************************************************************************

var editor = CKEDITOR.replace('TextBox1');

可依需求調整類似如下:

var editor = CKEDITOR.replace('TextBox1',

{

    filebrowserBrowseUrl: '/CKFinderScripts/ckfinder.html',

    filebrowserImageBrowseUrl: '/CKFinderScripts/ckfinder.html?type=Images',

    filebrowserUploadUrl: '/CKFinderScripts/connector?command=QuickUpload&type=Files',

    filebrowserImageUploadUrl: '/CKFinderScripts/connector?command=QuickUpload&type=Images'

});

若是在 ContentPlaceHolder 中,改要成類似如下:(依實際情況而變動)

var editor = CKEDITOR.replace('ContentPlaceHolder1_TextBox_WinnersContent');

********************************************************************************


(完)


2020年9月2日 星期三

[研究][ASP.NET][WebForm]CKFinder 3.5.11 試用(Zip安裝)

[研究][ASP.NET][WebForm]CKFinder 3.5.11 試用(Zip安裝)

2020-09-02

注意,CKFinder是付費套件,免費版會不定時跳出 Demo Version 訊息。

官方網站

https://ckeditor.com/ckfinder/
















(下圖) 上圖改成下面











(完)

相關

[研究][ASP.NET][JavaScript] ckeditor-full v4.9.2 試用(NuGet安裝)

http://shaurong.blogspot.com/2018/06/aspnetjavascript-ckeditor-full-v492.html


CKFinder 3 .Net 版本安裝失敗小筆記 – 要改的地方太多了,那就改天吧