Git Product home page Git Product logo

peregrine-cms's Introduction

peregrine cms

Introduction

Peregrine CMS (PER:CMS) is a Head Optional, API First Content Management System based on Apache Sling. It uses VueJS for the administration interface and can use any type of rendering (server side, react, vuejs, etc) for client facing websites.

a quick tour of Peregrine CMS

Watch more videos on how to use Peregrine CMS

Getting Started

To get started with Peregrine CMS you can use our command line tool:

npm install percli -g
percli server install

After the installation is complete a browser window opens (you may have to refresh the window). You can log in to Peregrine CMS with admin/admin as credentials.

To set up your own site in Peregrine CMS have a look at our quickstart guide.

Please visit peregrine-cms.com for more information

Installation in AEM

Peregrine CMS can now be installed on AEM.

To do that do the following:

  1. Start AEM
  2. Go to the root folder of Peregrine CMS source
  3. Build and install with mvn clean install -P installAEM
  4. Go to the System Console Config Manager: /system/console/configMgr
  5. Search for 'CSRF Filter'
  6. Edit that service (click on the pencil icon on the right or just click on the row)
  7. Remove 'POST' from the list of Filter Methods
  8. Save the changes
  9. Open the Admin folder on the URL: http://localhost:4502/content/admin.html

As of now there is not replication support from within Peregrine on AEM.

Note: If you run AEM on another port than 4502 use the sling.port property to override it like mvn clean install -P installAEM -Dsling.port=4503

Sponsors

  • headwire.com, Inc

License

Apache-2.0

peregrine-cms's People

Contributors

00v3rdr1v3 avatar adityasharma7 avatar andreas-hauser avatar bkheadwire avatar cmrockwell avatar dependabot[bot] avatar devintuffy avatar dimitriplotnikov avatar dna113p avatar felix-staud avatar flomarks avatar gastongonzalez avatar golinski avatar hsaginor avatar liqin avatar mckeehan avatar mckeehanheadwire avatar nickperez avatar niklasfluis avatar polished85 avatar reggie7 avatar reusr1 avatar rubenreusser avatar schaefa avatar smcgrath0 avatar swapnilmmane avatar tsaurabh74 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

peregrine-cms's Issues

special characters in node creation

we need to make sure when we create nodes (new page, new template, new object, new asset) that we handle special characters correctly. As it stands right now creating a page with a question mark in the name results in a node that can break peregrine.

In general we should keep the display name as typed and change non alphanumeric characters to a dash and make sure we do not have a conflict when creating such a node (does a node exist already with the node name we are trying to create)

Explorer UX updates

The UX for the explorer is not as intuitive as it could be. Two particular problems:

  • It is not obvious to the user that the rows can be reordered
  • Users expect Edit functionality when clicking on a label, not drill-down.

To fix this:

  • Add drag handles to the left of the rows. For now we will use the materializecss drag_handle icon. The cursor should change to "grab" and "grabbing" while rows are being moved.
  • Change the functionality for single-click on an asset name to display the edit window; add a double-click handler to drill down. We should also add a second way to drill-down that doesn't require a double click, either drill-down icon to the right of the label or a folder icon to the left.

pageView.view state is not persistent

When you are editing a page/template and you switch to preview-mode the state of pageView.view is preview:
Screenshot 2019-05-28 at 14 31 56
Screenshot 2019-05-28 at 14 59 25

Reloading the page resets this value to desktop:
Screenshot 2019-05-28 at 14 32 03
Screenshot 2019-05-28 at 15 00 04

There seems to be a problem with the init sequence. The iframe seems to be faster initialised than its parent.

Docker build fails under Mac OS X

Steps to Reproduce

  1. Checkout feature/docker branch.

  2. Run Docker build script.

$ cd docker
$ ./builddocker.sh 
...
xargs: illegal option -- -
usage: xargs [-0opt] [-E eofstr] [-I replstr [-R replacements]] [-J replstr]
             [-L number] [-n number [-x]] [-P maxprocs] [-s size]
             [utility [argument ...]]
...
Step 8/17 : RUN mkdir -p /usr/local/lib/nodejs     && tar -xJf /app/binaries/node-v10.15.3-linux-x64.tar.xz -C /usr/local/lib/nodejs     && java -version     && echo $PATH     && echo node: $(node -v)     && echo npm: $(npm -v)     && echo npx: $(npx -v)     && apt-get purge -y --auto-remove && rm -rf /var/lib/apt/lists/* && rm -rf /etc/apt/sources.list.d/temp.list;
 ---> Running in e2a4b145a0a3
xz: (stdin): File format not recognized
tar: Child returned status 1
tar: Error is not recoverable: exiting now

block input on slow operations

When I click on the 'edit' button for a page, there is sometimes a brief (~1 second) pause before the edit screen appears; during this time I am still able to interact with the page. For such operations, we should react to the click immediately with some sort of loading layer or similar to 1) prevent the user from performing any further actions until the action completes and 2) indicate to the user that the app got the request

Vue console error when leaving input or textarea

In the page editor, when a or <textarea> element receives a DOM input event, the following is thrown to the console:

admin.js:25574 [Vue warn]: Property or method "formatValueToModel" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property. See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.

found in

---> <FieldTexteditor>
       <VueFormGenerator>
         <AdminComponentsEditor>
           <AdminComponentsWorkspace>
             <AdminComponentsToolingpage>
               <Root>

This appears to be cause by this issue:

vue-generators/vue-form-generator#276

Dragging component in editor throws server error

To replicate:

  • Go to Pages, click on Editor for a page (for this I used the built-in "Write" page)
  • Press and hold on a draggable component, and attempt to move it to a new location on the page

Result: Component is not moved, and the server responds with a 400 error. Console output:

POST http://localhost:8080/perapi/admin/moveNodeTo.json/content/sites/docs/write/jcr:content/nav 400 (Bad Request)[error]
[apiImpl]                  Update with Form request to undefined failed
Uncaught (in promise) Error: Request failed with status code 400
    at e.exports (spread.js:25)
    at e.exports (spread.js:25)
    at XMLHttpRequest.l.(anonymous function) 

And here's the server response:

{
  "message" : "To Move a Node the Reference Resource must be provided",
  "exception" : [
    "com.peregrine.admin.resource.AdminResourceHandler$ManagementException: To Move a Node the Reference Resource must be provided",
    "\tat com.peregrine.admin.resource.AdminResourceHandlerService.moveNode(AdminResourceHandlerService.java:331)",
    "\tat com.peregrine.admin.servlets.MoveNodeTo.handleRequest(MoveNodeTo.java:105)",
    "\tat com.peregrine.commons.servlets.AbstractBaseServlet.doRequest(AbstractBaseServlet.java:78)",
    "\tat com.peregrine.commons.servlets.AbstractBaseServlet.doPost(AbstractBaseServlet.java:72)",
    "\tat org.apache.sling.api.servlets.SlingAllMethodsServlet.mayService(SlingAllMethodsServlet.java:149)",
    "\tat org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:346)",
    "\tat org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:378)",
    "\tat org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:552)",
    "\tat org.apache.sling.engine.impl.filter.SlingComponentFilterChain.render(SlingComponentFilterChain.java:44)",
    "\tat org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:77)",
    "\tat org.apache.sling.engine.impl.SlingRequestProcessorImpl.processComponent(SlingRequestProcessorImpl.java:282)",
    "\tat org.apache.sling.engine.impl.filter.RequestSlingFilterChain.render(RequestSlingFilterChain.java:49)",
    "\tat org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:77)",
    "\tat org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter.doFilter(RequestProgressTrackerLogFilter.java:107)",
    "\tat org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)",
    "\tat org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:138)",
    "\tat org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)",
    "\tat org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:73)",
    "\tat org.apache.sling.engine.impl.SlingRequestProcessorImpl.doProcessRequest(SlingRequestProcessorImpl.java:151)",
    "\tat org.apache.sling.engine.impl.SlingMainServlet.service(SlingMainServlet.java:234)",
    "\tat org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:85)",
    "\tat org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:79)",
    "\tat org.apache.felix.http.sslfilter.internal.SslFilter.doFilter(SslFilter.java:89)",
    "\tat org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135)",
    "\tat org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74)",
    "\tat org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:138)",
    "\tat org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135)",
    "\tat org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74)",
    "\tat org.apache.sling.engine.impl.log.RequestLoggerFilter.doFilter(RequestLoggerFilter.java:72)",
    "\tat org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135)",
    "\tat org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74)",
    "\tat org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:128)",
    "\tat org.apache.felix.http.base.internal.dispatch.DispatcherServlet.service(DispatcherServlet.java:49)",
    "\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:725)",
    "\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845)",
    "\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:584)",
    "\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:224)",
    "\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)",
    "\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512)",
    "\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)",
    "\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)",
    "\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)",
    "\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)",
    "\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)",
    "\tat org.eclipse.jetty.server.Server.handle(Server.java:534)",
    "\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)",
    "\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)",
    "\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283)",
    "\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)",
    "\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)",
    "\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)",
    "\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)",
    "\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)",
    "\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)",
    "\tat org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)",
    "\tat java.lang.Thread.run(Thread.java:748)"
  ]
}

Form data sent with request:

component: /content/sites/docs/write/jcr:content/content/row
drop: before

Based on the server response I am assuming we're missing a parameter from the request.

Warning when editing a collection component without multifield

I think this is functioning fine but we should allow an array as a prop type.

admin.js:25570 [Vue warn]: Invalid prop: type check failed for prop "model". Expected Object, got Array 

found in

---> <FormGroup>
       <FormGenerator>
         <FieldCollection>
           <FormGroup>
             <FormGenerator>
               <AdminComponentsObjectview>
                 <AdminComponentsExplorerpreview>
                   <AdminComponentsExplorer>
                     <AdminComponentsToolingpage>
                       <Root>

materialize css needs to be re-deployed manually after scss updates

Steps:

  • Change one of the .scss files located in /admin-base/materialize/custom
  • run "percli compile -d" from /admin-base

Result: css changes are not deployed to the app with the rest of the changes. If I go into materialize/target I can see that sass has run and the css files are built, but they are not deployed to sling.

In order for these changes to take effect, I need to go into /materialize and run "percli compile -d" in order to deploy the css.

For this ticket: make sure when deploy flag is set, materialize deploy step also happens.

site switcher (<section>/<tenant> to <tenant>/<section>)

concern:

currently all consoles in peregrine start at the /content/{concept} level. It may be better to switch this and add a drop down to the top toolbar where one can select the site (or tenant) the user is currently working with. This should also allow us to have better path browsers to choose assets or links to other pages as we would always know the context the user is working in

this issue has been created to discuss this topic and solicit feedback from the community

Range field slider buggy

Any field using vue form generator field with type="input" and inputType="range" - The slider Icon should follow the cursor as you adjust it, also there is a noticeable lag between the slider update and its being reflect on the page.
image

Deleting component in editor throws exception in console

To replicate:

  • Open page editor
  • drag components onto page
  • select component
  • In the component editor panel, click on the Delete button. The following is thrown to the console:
admin.js:25760 [Vue warn]: Error in render: "Error: undefined variable: model"

found in

---> <FormGenerator>
       <AdminComponentsEditor>
         <AdminComponentsWorkspace>
           <AdminComponentsToolingpage>
             <Root>
             
admin.js:25760 Error: undefined variable: model
    at evaluate (dependencies.js:9721)
    at Expression.evaluate (dependencies.js:9919)
    at Function.Parser.evaluate (dependencies.js:11002)
    at VueComponent.data.model.fields.(anonymous function).visible (http://localhost:8080/etc/felibs/admin.js:23278:58)
    at VueComponent.fieldVisible (dependencies.js:9108)
    at dependencies.js:9108
    at Proxy.renderList (vue.js:2631)
    at Proxy.r (dependencies.js:9108)
    at VueComponent.Vue._render (vue.js:3538)
    at VueComponent.updateComponent (vue.js:4042)

This is ultimately cause by this block in https://github.com/headwirecom/peregrine-cms/blob/master/admin-base/ui.apps/src/main/js/apiImpl.js, lines 276-282:

if(visible) {
    data.model.fields[i].visible = function(model) {
        return exprEval.Parser.evaluate( visible, this );
    }
}

That method fires after the object has been deleted, so at the time it runs “model” is undefined. I tried adding if(model) into the inner function -- this fixes the problem here, but then another exception pops up that looks to be caused by the same thing — a reactive handler bound to the deleted object.

Using special character for component names leads to compilation errors

During I was working through the tutorial ( http://www.peregrine-cms.com/docs/sitedev/quickstart.html ), I created a site with hyphen-minus character (-). The compilation of the site ended with the following error:

[ERROR] /Users/dimitriplotnikov/repo/percms/percms/metaproccomponent-v6/core/src/main/java/com/metaproccomponent-v6/models/TextModel.java:[1,30] ';' expected
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for metaproccomponent-v6-parent 1.0-SNAPSHOT:
[INFO]
[INFO] metaproccomponent-v6-parent ........................ SUCCESS [  0.389 s]
[INFO] metaproccomponent-v6 - Core ........................ FAILURE [  0.624 s]
[INFO] metaproccomponent-v6 - UI Apps ..................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.917 s
[INFO] Finished at: 2019-05-06T17:53:59+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:compile (default-compile) on project core: Compilation failure
[ERROR] /Users/dimitriplotnikov/repo/percms/percms/metaproccomponent-v6/core/src/main/java/com/metaproccomponent-v6/models/TextModel.java:[1,30] ';' expected

The source code of the generated TextModel:

package com.metaproccomponent-v6.models;

import com.peregrine.nodetypes.models.AbstractComponent;
import com.peregrine.nodetypes.models.IComponent;
import com.peregrine.nodetypes.models.Container;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.models.annotations.Default;
import org.apache.sling.models.annotations.DefaultInjectionStrategy;
import org.apache.sling.models.annotations.Exporter;
import org.apache.sling.models.annotations.Model;
import java.util.List;

import javax.inject.Inject;
import javax.inject.Named;

/*
    //GEN[:DATA
    {
  "definitions": {
    "Text": {
      "type": "object",
      "x-type": "component",
      "properties": {
        "text": {
          "type": "string",
          "x-source": "inject",
          "x-form-type": "texteditor"
        }
      }
    }
  },
  "name": "Text",
  "componentPath": "metaproccomponent-v6/components/text",
  "package": "com.metaproccomponent-v6.models",
  "modelName": "Text",
  "classNameParent": "AbstractComponent"
}
//GEN]
*/

//GEN[:DEF
@Model(
        adaptables = Resource.class,
        resourceType = "metaproccomponent-v6/components/text",
        defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL,
        adapters = IComponent.class
)
@Exporter(
        name = "jackson",
        extensions = "json"
)

//GEN]

I would rather add a check to ensure that only supported names are accepted by percli create

Node artifacts should be excluded from Docker image

The Docker image should not include Node build-time artifacts. They are not needed by the image. node_modules and package-lock.json should be excluded.

root@peregrine-s2mxd:/app# ls -al
total 84
drwxr-xr-x   1 root root  4096 Jun  5 22:34 .
drwxr-xr-x   1 root root  4096 Jun  6 16:42 ..
-rwxrwxr-x   1 root root   300 Jun  5 22:26 healthcheck.sh
-rw-rw-r--   1 root root   332 Jun  5 22:26 installpackageretry.sh
-rwxrwxr-x   1 root root  1170 Jun  5 22:26 installpackage.sh
drwxr-xr-x 144 root root  4096 Jun  5 22:29 node_modules
drwxr-xr-x   2 root root  4096 Jun  5 22:29 out
-rw-r--r--   1 root root 42008 Jun  5 22:29 package-lock.json
drwxr-xr-x   1 root root  4096 Jun  6 16:42 sling

Cannot read property 'preview' of undefined

Reproduction:

  1. checkout develop branch
  2. build and deploy project
  3. open browser (chrome in my case) and open a new tab (the new tab is very important!)
  4. open http://localhost:8080/
  5. open Dev-Tools and have the option "disable cache" active
    Screenshot 2019-05-29 at 12 37 36
  6. click the Link "sites and pages"
    Screenshot 2019-05-29 at 12 39 48
  7. click on "public" to open the page-editor
    Screenshot 2019-05-29 at 12 40 44
  8. click on the preview button
    Screenshot 2019-05-29 at 12 40 48
  9. check the JS-console and you will see the error
    Screenshot 2019-05-29 at 12 32 41

Workaround

The current workaround for this issue is to select a different viewport before clicking the preview buttons

Object/Edit view form element display issues

There are multiple style issues with form fields when editing objects, assets and components.

  • Button for add new item to collection is distorted
  • Width of textarea, range, collection, select, multiselect should be full width
  • Icon chooser icon is wrapping to a new line

Newly-created site shows wrong label on folders

To reproduce:

  • Navigate to 'sites', use + button to create a new site
  • Go through the wizard, give site a name. Use "themeclean" as the basis

Result:

While the breadcrumbing shows the "correct" name of the folder or item, the explorer shows the site name for every sub-item in the site:

Screen Shot 2019-03-18 at 1 06 11 PM

Screen Shot 2019-03-18 at 1 06 20 PM

inputType: number is laggy

When using "inputType": "number" for a component the delay between changing the value and watching the component apply the value (for example changing its width) is annoyingly long.

I've used the following field in my dialog.json:

{
      "type": "input",
      "inputType": "number",
      "placeholder": "Width",
      "label": "width",
      "model.number": "width",
      "min": 1
    },

When using an alternative like material-slider or "inputType": "text" it works perfectly fine without any noticeable delay

Component Filter not working properly (Author Interface)

When editing a page (e.g. pages -> themeclean) the filter for the components is not applied right away and the drop-down value is initially empty.
To make it apply you have to click on an existing component to open the "edit component dialog" and close it again.

I tested this on the develop branch with commit db1995c (current latest commit)

Edit:
This error actually only occurs when you open the edit page by pressing the edit-button:
Screenshot 2019-05-02 at 08 30 15

When clicking on the name of the page the filter works properly and the filter is not empty initially.

Being able to delete page component from template

When you create a new site and then edit it under templates you are able to delete the page component which leads to the site being useless since you cant drag any components on it anymore. Is that intended?

Add healthcheck to peregrine docker

When setting up automated testing to use docker, we need to have the test runner sleep for 30 seconds before starting tests to give the container time to start up.

Ideally, the container will implement a HEALTHCHECK ( https://docs.docker.com/engine/reference/builder/#/healthcheck ) so we can use docker inspect to check the status.

DoD: The following returns 'healthy' only when peregrine is in a state where users can connect and login:

docker inspect -f {{.State.Health.Status}}

Own Component has no Text

I followed the quickstart guide and created my own site and own component. I can drag the component onto the page but it its just an empty div with no text.

Missing Export error during build

Rollup.js produces scores of this error while building the vue templates:

[ERROR] { Error: 'default' is not exported by ../../../buildscripts/node_modules/vue-runtime-helpers/dist/normalize-component.js
[ERROR]     at error (/Users/devin/per-cms/peregrine-cms/buildscripts/node_modules/rollup/dist/rollup.js:3597:30)
[ERROR]     at Module.error (/Users/devin/per-cms/peregrine-cms/buildscripts/node_modules/rollup/dist/rollup.js:14376:9)
[ERROR]     at handleMissingExport (/Users/devin/per-cms/peregrine-cms/buildscripts/node_modules/rollup/dist/rollup.js:14046:21)
[ERROR]     at Module.traceVariable (/Users/devin/per-cms/peregrine-cms/buildscripts/node_modules/rollup/dist/rollup.js:14477:17)
[ERROR]     at ModuleScope.findVariable (/Users/devin/per-cms/peregrine-cms/buildscripts/node_modules/rollup/dist/rollup.js:13811:29)
[ERROR]     at Identifier$$1.bind (/Users/devin/per-cms/peregrine-cms/buildscripts/node_modules/rollup/dist/rollup.js:11160:40)
[ERROR]     at CallExpression.NodeBase.bind (/Users/devin/per-cms/peregrine-cms/buildscripts/node_modules/rollup/dist/rollup.js:10190:23)
[ERROR]     at CallExpression.bind (/Users/devin/per-cms/peregrine-cms/buildscripts/node_modules/rollup/dist/rollup.js:11272:31)
[ERROR]     at ExportDefaultDeclaration$$1.NodeBase.bind (/Users/devin/per-cms/peregrine-cms/buildscripts/node_modules/rollup/dist/rollup.js:10190:23)
[ERROR]     at Program.NodeBase.bind (/Users/devin/per-cms/peregrine-cms/buildscripts/node_modules/rollup/dist/rollup.js:10186:31)
[ERROR]     at Module.bindReferences (/Users/devin/per-cms/peregrine-cms/buildscripts/node_modules/rollup/dist/rollup.js:14329:18)
[ERROR]     at Graph.link (/Users/devin/per-cms/peregrine-cms/buildscripts/node_modules/rollup/dist/rollup.js:17149:20)
[ERROR]     at /Users/devin/per-cms/peregrine-cms/buildscripts/node_modules/rollup/dist/rollup.js:17243:19
[ERROR]     at process._tickCallback (internal/process/next_tick.js:68:7)
[ERROR]     at Function.Module.runMain (internal/modules/cjs/loader.js:745:11)
[ERROR]     at startup (internal/bootstrap/node.js:283:19)
[ERROR]   code: 'MISSING_EXPORT',
[ERROR]   url:
[ERROR]    'https://rollupjs.org/guide/en#error-name-is-not-exported-by-module-',
[ERROR]   pos: 945,
[ERROR]   loc:
[ERROR]    { file:
[ERROR]       '/Users/devin/per-cms/peregrine-cms/samples/example-vue-site/ui.apps/src/main/content/jcr_root/apps/example/components/footer/template.vue',
[ERROR]      line: 36,
[ERROR]      column: 9 }

The result is that the vue app isn't bundled correctly, and pages in the admin don't work at all due to missing code.

how to use sling-11.jar?

Now peregrine-cms use sling-9, when to upgrade to sling-11? I also found a branch for sling-11,how can i use it? thanks!

Refactor Dockerfile to adhere to best practices

Refactor the Dockerfile to adhere to the following best practices:

  1. Include .dockerignore.
  2. Sort apt-get install package list alphanumerically to avoid potential duplication.
  3. Reduce number of layers.

Site, page other Wizards: user sees validation error immediately upon page load

  • Sites -> New Site

Screen Shot 2019-03-18 at 12 58 56 PM

"selection required" error is displayed right away. This should only appear if the user attempts to click "next" without selecting.

UI tweaks to fix with this as well:

  • Fix capitalization on "selection required"
  • Add some sort of treatment so it is obvious to user that the theme area is clickable.

New Project Build Failure

Hi
I was interested in trying Peregrin CMS. This command
percli create project my-project

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:3.0.1:generate (default-cli) on project standalone-pom: The desired archetype does not exist (com.peregrine-cms:peregrine-project-archetype:1.0) -> [Help 1]

Using
Ubuntu 18.04
NPM 3.5.2
Maven 3.5.2 (weird coincidence)
Java 1.8

Mixed Content http

Hello
Thank you making a nice looking CMS. I'm trying to use Peregrine on AWS where SSL is handled by the load balancer and forwarded on with a header HTTP:X-Forwarded-Proto https But I'm finding a lot of trouble with mixed content with these resources.

/perapi/admin/access
/system/sling/info.sessionInfo

Generally what I'm finding is that any page below /content/admin.html will not load thru the intended https domain. Accessing thru a backdoor works. In the browser, I allowed the unsafe scripts to load and allowed xhr http paths by adding Access-Control-Allow-Origin header. But it will does not work. After doing that it appears a js alert executes stating "please login to continue"

Any advice?
Cris

Templates created when new site is created have the same name as original template

When creating a new site from a template, a new template gets created. This template always has the same name as the original template, leading to multiple copies of templates with the same name:

Screen Shot 2019-03-19 at 11 00 23 AM

Making sure that updateTitle() is called on the new template still results in the same thing, composum shows that this is because there is both a title attribute and a jcr:title attribute:

Screen Shot 2019-03-29 at 10 39 24 AM

Series of console errors when creating new object

  • Go to "Objects", click on "New Object"
  • Click on an object template. Every time you do, this is thrown to the console:
  | console.error | @ | admin.js:25574
-- | -- | -- | --
  | title | @ | admin.js:124
  | get | @ | vue.js:4418
  | evaluate | @ | vue.js:4523
  | computedGetter | @ | vue.js:4772
  | get | @ | vue.js:2094
  | __vue_render__ | @ | admin.js:292
  | Vue._render | @ | vue.js:3520
  | updateComponent | @ | vue.js:4020
  | get | @ | vue.js:4418
  | run | @ | vue.js:4493
  | flushSchedulerQueue | @ | vue.js:4251
  | (anonymous) | @ | vue.js:1979
  | flushCallbacks | @ | vue.js:1905
  | Promise.then (async) |   |  
  | timerFunc | @ | vue.js:1932
  | nextTick | @ | vue.js:1989
  | queueWatcher | @ | vue.js:4343
  | update | @ | vue.js:4483
  | notify | @ | vue.js:745
  | reactiveSetter | @ | vue.js:1070
  | selectItem | @ | admin.js:4782
  | actionImpl | @ | admin.js:25926
  | actionImpl | @ | admin.js:25933
  | actionImpl | @ | admin.js:25933
  | actionImpl | @ | admin.js:25933
  | action | @ | admin.js:26276
  | action | @ | admin.js:138
  | click | @ | admin.js:297
  | invokeWithErrorHandling | @ | vue.js:1856
  | invoker | @ | vue.js:2178
  | original._wrapper | @ | vue.js:7485

This happens five times in a row for each click

Edit/Info action on object throws series of exceptions

  • Navigate to /objects/example
  • click on "edit" button for collection object

Result: Garbled UI (see screenshot), and this exception thrown to console seven (7) times:

admin.js:25574 TypeError: Cannot read property 'toLowerCase' of undefined
    at VueComponent.formatValueToField (dependencies.js:14631)
    at Proxy.get (dependencies.js:14631)
    at Proxy.computedGetter (vue.js:4784)
    at Proxy.r (dependencies.js:14631)
    at VueComponent.Vue._render (vue.js:3520)
    at VueComponent.updateComponent (vue.js:4020)
    at Watcher.get (vue.js:4418)
    at Watcher.run (vue.js:4493)
    at flushSchedulerQueue (vue.js:4251)
    at Array.<anonymous> (vue.js:1979)
console.error @ admin.js:25574
logError @ vue.js:1887
globalHandleError @ vue.js:1878
handleError @ vue.js:1844
Vue._render @ vue.js:3522
updateComponent @ vue.js:4020
get @ vue.js:4418
run @ vue.js:4493
flushSchedulerQueue @ vue.js:4251
(anonymous) @ vue.js:1979
flushCallbacks @ vue.js:1905
Promise.then (async)
timerFunc @ vue.js:1932
nextTick @ vue.js:1989
queueWatcher @ vue.js:4343
update @ vue.js:4483
notify @ vue.js:745
reactiveSetter @ vue.js:1070
set @ vue.js:1091
(anonymous) @ admin.js:22956
populateView @ admin.js:22952
(anonymous) @ admin.js:23136
Promise.then (async)
(anonymous) @ admin.js:23135
Promise.then (async)
(anonymous) @ admin.js:23134
populateObject @ admin.js:23126
populateObject @ admin.js:22554
editObject @ admin.js:24616
stateActionImpl @ admin.js:25977
stateAction @ admin.js:26288
editPage @ admin.js:7444
actionImpl @ admin.js:25926
actionImpl @ admin.js:25933
action @ admin.js:26276
action @ admin.js:138
click @ admin.js:297
invokeWithErrorHandling @ vue.js:1856
invoker @ vue.js:2178
original._wrapper @ vue.js:7485
2admin.js:25574 [Vue warn]: Invalid prop: type check failed for prop "model". Expected Object, got Array 

found in

---> <FormGroup>
       <FormGenerator>
         <FieldCollection>
           <FormGroup>
             <FormGenerator>
               <AdminComponentsObjectview>
                 <AdminComponentsExplorerpreview>
                   <AdminComponentsExplorer>
                     <AdminComponentsToolingpage>
                       <Root>

The same error is thrown clicking on the "Info" button for any object.

screen shot 2019-02-19 at 9 06 38 am

Error when trying to edit certain components

In the example site, when clicking on "Row Start", or other components, this error is displayed to the user:

screen shot 2019-02-19 at 9 11 43 am

Accompanied by this message in the console:

[debug] [editComponent]            Failed to show editor: TypeError: Cannot read property 'fields' of undefined

materialchecklist field not working

I've added the following JSON to my mode.json in a custom component:

"checklist": {
  "type": "string",
  "x-source": "inject",
  "x-form-label": "Choose Type",
  "x-form-type": "materialchecklist",
  "properties": {
    "type1": {
      "x-form-name": "Type 1",
      "x-form-value": "type1"
    },"type2": {
      "x-form-name": "Type 2",
      "x-form-value": "type2"
    }
  }
}

Then I added my custom component to a page, clicked on it to open the editor-panel and everything I could see was this:

Screenshot 2019-05-07 at 07 56 28

According to the documentation it should look something like this:
image

Editor: show current page title

While in the editor, the only way to see the page you are editing is via looking at the URL.

Some browsers hide the full URL by default, and it's not a good user experience to use it for a page title. We should find somewhere on the page where the name/path is displayed.

Cannot create certain objects

When using the create object wizard and selecting 'allfields' object from the example project I can no longer proceed past the second step. No console errors.

Checkbox in Pathbrowser not working

We are currently creating our own Components and created a Link Component which uses the Pathbrowser for setting the link. When you open the Pathbrowser and then click on the link tab you cant check the checkbox.
Bildschirmfoto 2019-06-12 um 15 29 22

Updating the peregrine-builder to the sling-feature model

Since the old sling provisioning doesn't support content packages, perigrine content was installed manually on top of sling. The feature-model that was released this April does support provisioning of content packages (zips) and would enable to build a "self-contained" single jar peregrine distribution without any supplementary steps.

There is a preliminary work on adoption the sling features and it would be a great benefit if the work started in https://github.com/headwirecom/peregrine-cms/tree/feature/sling-feature-builds/sling-feature would be accomplished.

material-select field not working

In the example allfields object, the material multi-select cannot select multiple elements. If you try to select any item you can no longer select multiple items. Also if you then switch to preview mode it renders a large list of empty items.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.