headwirecom / peregrine-cms Goto Github PK
View Code? Open in Web Editor NEWan api first, head optional cms with based on vuejs and apache sling
License: Apache License 2.0
an api first, head optional cms with based on vuejs and apache sling
License: Apache License 2.0
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
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?
There are multiple style issues with form fields when editing objects, assets and components.
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.
"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:
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!
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.
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:
The UX for the explorer is not as intuitive as it could be. Two particular problems:
To fix this:
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
Viewing the page editing video http://www.peregrine-cms.com/videos.html
I am not seeing this behavior. The screenshot shows my edits on the Jumbotron. The changes are not reflecting on the page preview. After submitting changes, the updates are not reflected. But reloading the page does render the updates.
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.
Checkout feature/docker
branch.
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
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
The current workaround for this issue is to select a different viewport before clicking the preview buttons
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:
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:
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
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)
To replicate:
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.
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.
| 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
when using https://github.com/headwirecom/peregrine-cms/tree/upgrade-to-sling-11 the logo on the login screen is missing (seems to be protected where in sling9 this was unprotected),
on a running peregrine instance when logged out, go to: http://localhost:8080/system/sling/form/login
notice the logo missing, reference to image is http://localhost:8080/etc/felibs/admin/images/peregrine-logo.png
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
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:
When clicking on the name of the page the filter works properly and the filter is not empty initially.
In commit a242d344354946f8f5cb30986f9e55693e7a8c96 the preview mode was made sticky for the page-editor but not for the template-editor
Refactor the Dockerfile to adhere to the following best practices:
.dockerignore
.apt-get install
package list alphanumerically to avoid potential duplication.The feature/docker
branch does not include documentation for running or building the Docker image.
When creating new site through percli create project the created site doesn't include the page component which makes it impossible to drag components onto the page.
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.
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
open a new browser, log in to peregrine, add a component to a page and change a value, then save.
when this action is done the first time for a new browser session the save fails
To properly show Peregrine as a fast and accessible CMS, we need to make sure that our examples demonstrate that well.
For a starting point, we should get our Google Lighthouse audit scores for mobile devices on 3G up to 100%. For the example vue site:
https://googlechrome.github.io/lighthouse/viewer/?gist=0301c3017982a131b2a03007b71e1cdc
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.
Steps:
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.
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>
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.
To replicate:
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.
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
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}}
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:
According to the documentation it should look something like this:
on a peregrine instance built with https://github.com/headwirecom/peregrine-cms/tree/upgrade-to-sling-11 after logging in through http://localhost:8080/ you are taken to the sling default homepage instead of the peregrine index.html file. This is due to the move of the starter content.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.