Elements with templates housed within a theme throw error on CMS search

I've got a number of namespaced element templates housed inside a theme folder - all works as expected on frontend however throws an error within a CMS search.
[User Warning] None of the following templates could be found: Array ( [0] => Company\Project\Elements\ElementPathway_Elements [1] => Company\Project\Elements\ElementPathway [2] => Company\Project\Elements\ElementPathway_Elements [3] => Company\Project\Elements\ElementPathway ) in themes "Array ( [0] => silverstripe/admin:cms-forms [1] => $default ) "

My element templates all live at themes/base/templates/Company/Project/Elements.
This my theme setup:
---
Name: mytheme
---
SilverStripe\View\SSViewer:
  themes:
    - '$public'
    - 'base'
    - '$default'

Module versions:
dnadesign/silverstripe-elemental 2.x-dev 75b4fff
silverstripe/admin 1.1.0
silverstripe/cms 4.1.0
silverstripe/framework 4.1.0

In short looks like templates aren't making it to the $default theme.  I understand generally most element templates will be housed in their own module but I would of thought we would need to allow for this more custom use case.

We've also got this problem (same module/framework versions), and our blocks are pretty custom so not worth making a module out of each one. Could just have it search in theme folders too? Or should we be providing a 'search result' representation of the block?

Same issue here with 4.1.0 and module v.2.x-dev (75b4fff5)

Throughout history the CMS has traditionally explicitly unset themes. I've not looked into the process in SilverStripe 4, however I'm assuming at this point that it's still the same (unsets all themes except $default I guess, now that it's a list). This prevents e.g. custom form fields from interfering with CMS functionality.
The issue here is that because elements are so free in defining what they contain, there is no way to search through them all uniformly. With page types there is always Title and Content as a common denominator, and this is what is searched. Elemental pages don't have Content anymore, so searching becomes a non-event (bad). In order to circumvent this limitation simply dumping the rendered output of all the elements into a 'content' to be searched helps get around this... except when in the CMS there is no theme, so if a template exists only in a theme, it fails.
A work around while we think about a solution would be to abstract into a module (perhaps even app) and house templates for your elements there. That way they'll hopefully be covered as '$default' as opposed to 'theme' templates.

I'm running 4.2.x-dev on my latest project so i've adopted the new recommend app structure and it that looks like it gets around it @NightJar.

Neat, thanks for reporting back :)
I've found the issue. And good news; SS4 does have a theme in the CMS. This is both good and bad news.
Good:
You can set templates via setting a theme (fallback) for the CMS.
Bad:
You can easily wreck your CMS experience.
Ugly:
To hold a developers hand through this would be ... complicated.
Fix
Short version:
Give a little documentation, and what basically amounts to a "Don't screw it up" note. Not overly helpful, as it relies on developers trying to read up on how to fix issues they encounter (as everyone in this thread has).
OR
Write some kind of clear path to go down to avoid this issue, involving decorators and manipulating the admin theme list programmatically. This would be delivered on 'best guess' and would still essentially carry all the caveats of the first solution - the only difference is keeping a (moderately) clearer separation of concerns between Elemental and the CMS (theme).
Long version:
https://github.com/silverstripe/silverstripe-admin/blob/a8e56166f01ef0fb8ecd46edb4eddde30447cdb0/code/LeftAndMain.php#L177-L186
This list holds the (totallity) of the admin themes.
https://github.com/silverstripe/silverstripe-admin/blob/1/code/LeftAndMain.php#L742-L743
And these lines show how it is set (note UNINHERITED).
With this in mind;
We can add some documentation (preferably in at least two places; the greater docs along with an summarised yet large and loud statement in the readme) informing developers of this issue (site tree search in the CMS) and that this config value must be set in their project in order to work around it, along with listing the caveats of doing such (altering the defaults here via yaml will result in a merge, i.e. ['admin-forms', '$default', 'sweet-custom-elements', 'etc-elements'] - which to my understanding is wrong ('$default' should be last).
OR
Add a decorator that lives in silverstripe-elemental and implements an onAfterInit that modifes this value (note it is global state - SSViewer::set_themes), reading extra themes to include in the CMS from a config setting residing in elemental. The only real advantage here is that it doesn't promote the wanton application of themes to the CMS by obscuring that fact behind an elemental specific configuration value - which also encourages the fact that it's an exception specific to elemental.
BOTH
of these solutions would require clear docs around separating themes out to be listed, and that all custom element templates should be confined to their own theme, as so that any other page, or form field, or requirement of some sort is not pulled into the CMS and inadvertently destroys some functionality or suchlike (particularly in some insidious ways such as the nature of complex CSS which may not be completely obvious).
In the mean time

There is a work-around in hosting templates within the project itself (as I'm aware many vendors already do, instead of managing separate themes & application logic).
One can still explicitly set the config value SilverStripe\Admin\LeftAndMain.admin_themes given that they should have read this post and be aware of the caveats in order to do so.

I think the solutions above are a little over complicated, we can simply nest the config manifest and apply the frontend themes around the area where we generate the element content.

PR at https://github.com/dnadesign/silverstripe-elemental/pull/262

Ideal, something I hadn't considered. That's why it's worthwhile asking the question!


Subscription example is missing

I'm having problems when playing with subscriptions, for POC I'm using SpaceX API, and the subscription never fires up.
The code is:
client.dart
Future<Client> initWebsocketClient() async {
  final link = Link.from([
    WebSocketLink('ws://api.spacex.land/graphql/'),
  ]);

  final client = Client(
    link: link,
  );

  return client;
}

Future<Client> initHttpClient() async {
  final link = Link.from([
    HttpLink('https://api.spacex.land/graphql/'),
  ]);

  final client = Client(
    link: link,
  );

  return client;
}

app.dart
class App extends StatefulWidget {
  final Client websocketClient;
  final Client httpClient;

  App(this.websocketClient, this.httpClient);

  @override
  State<App> createState() => _AppState();
}

class _AppState extends State<App> {
  get _scaffold => Scaffold(
        body: Center(
          child: TextButton(
              onPressed: () async {
                final mutationRequest = GInsertUsersReq((b) => b..vars.name = 'Jakub');
                widget.httpClient.request(mutationRequest).listen((event) {
                  print('DUPA mutation, ${event.data?.insert_users?.affected_rows}');
                });
              },
              child: Text('Hello')),
        ),
      );

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Pokemon Demo',
      home: _scaffold,
    );
  }

  @override
  void initState() {
    final subscriptionRequest = GUsersReq();
    widget.websocketClient.request(subscriptionRequest).listen((event) {
      print('DUPA websocket, ${event.data?.users?.map((p0) => p0.id)}');
    });
    super.initState();
  }
}

mutation InsertUsers($name: String!) {
    insert_users(objects: {name: $name}) {
        affected_rows
    }
}

subscription Users {
  users {
    id
  }
}

Can you see issues with my implementation?
Or could you point me to a sample subscription code that works?
It's not well documented, to be honest.

Please use the discord for general assistance and help using the library.
PRs welcome to improve the docs.

so example on how to use subscriptions in ferry is the secret? or everybody should scroll over discord now and google hrs to find out?

@mnts, hello. have you find an answer for you request please ?


Fix completion parse error

This PR fixes the error _brew_services:88: parse error near `>' due unescaped single quote.
An alternative way is to use UTF apostrophe ’.

@MikeMcQuaid Agree, looks cleaner

Thanks for your contribution to Homebrew!  You rock!


frida.InvalidOperationError: script has been destroyed

To anyone trying to use this, a word of advice to save you a lot of time: it won't work with the latest versions of Frida.
I haven't tried all the versions to see exactly where the cutoff is, but as an example, if you download frida-server-12.11.10 on the host machine, and pip install frida-tools==8.1.3 (the corresponding version of frida-tools), it seems to work, whereas using the latest versions consistently gives me a frida.InvalidOperationError: script has been destroyed error as soon as it the hooked function is called.

https://github.com/frida/frida/releases/tag/12.11.10 for that version
(I picked it based on the Frida release date and the last commit to this repo)


set-env is deprecated

Error: The set-env command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2020-10-01-github-actions-deprecating-set-env-and-add-path-commands/

@ricardojosegomezulmke We have already addressed this issue. Are you facing this issue? If so, please send workflow and workflow log runs.

Closing issue since it is already fixed in action. Please feel free to reopen if you are facing any issues.

Seeing the same issue, using:
      - name: Azure login
        uses<EMAIL_ADDRESS>        with:
          creds: ${{secrets.AZURE_CREDENTIALS}}

Gives following error ouput:
Run<EMAIL_ADDRESS>Error: The `set-env` command is deprecated and will be disabled on November 16th. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2020-10-01-github-actions-deprecating-set-env-and-add-path-commands/
Error: The `set-env` command is deprecated and will be disabled on November 16th. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2020-10-01-github-actions-deprecating-set-env-and-add-path-commands/

Ok, I solved it by changing to: uses: azure/login@v1


how to resolve command?

I input ./yii queue/info and output Unknown command: queue/info
how to solve?

Command queue/info is availabled for DB  and Redis queues from 0.11.0. To check your version of package.

thanks for your answering,but not solving my quest.
i am use rabbitmq and yii2-queue version is newest.i input "yii queue/listen" and output "Unknown command:queue/listen"
please help me how to use queue listen?thx

Do you add queue component to bootstrap section?
'bootstrap' => ['queue']

thank you very mach,i have resolved it via your helping


Wrong powershell command?

The powershell command does not seem to create the throttle rate property created manually via GPO. Looks like the standard QoS command.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 61f7f42b-921b-53b4-f1ed-ea459e43d51f
Version Independent ID: d741291b-7240-f250-3238-4e06bbc10b14
Content: Remote Desktop Protocol bandwidth requirements Azure Virtual Desktop - Azure
Content Source: articles/virtual-desktop/rdp-bandwidth.md
Service: virtual-desktop
GitHub Login: @gundarev
Microsoft Alias: denisgun

Thanks for the feedback! I have assigned the issue to the content author to investigate further and update the document as appropriate.


Support Test Proxy's AddSanitizers in azure-core-test

Description
This PR updates azure-core-test to use the new AddSanitizers endpoint in Test Proxy to set test sanitizers in bulk instead of the previous AddSanitizer endpoint which required a request for each sanitizer being added.
All SDK Contribution checklist:

[x] The pull request does not introduce [breaking changes]
[x] CHANGELOG is updated for new features, bug fixes or other significant changes.
[x] I have read the contribution guidelines.

General Guidelines and Best Practices

[x] Title of the pull request is clear and informative.
[x] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

[x] Pull request includes test coverage for the included changes.

/azp run java - resourcemanager

API change check
APIView has identified API level changes in this PR and created following API reviews.
azure-core-test

/azp run java - resourcemanager

/azp run java - resourcemanager

/azp run java - resourcemanager


Dartium is not at feature-parity with Chrome for ES6 Harmony

Hi,
I'm writing an extension to use with a dart app, so that it can communicate with a native application. I want to use ES6 classes in the extension, as they are now available in stable Chrome. However, this seems to not be implemented in Dartium (even with Enable Harmony in about:flags). Test case:
eval('
    "use strict"; \
    class Test { constructor() { console.log("hello"); } }; \
    new Test(); \
');

It would be great if Dartium could be brought up to speed; as I said, this is entirely supported in stable Chrome.
EDIT: looks like Dartium stable is based on Chrome 39, can I assume this bug will disappear when a new enough Dartium lands?
Cheers
Jarrad

An updated Dartium was announced for 1.14.
Some recent activity https://groups.google.com/a/dartlang.org/forum/?nomobile=true#!topic/reviews/z4bsChAG5yA

Duplicate of 24218


Can't build/serve on Windows 10, spawn bundle ENOENT error

Hi Taylor
First of all thanks for your work in putting together this bundle. I seldom open issues in Github, but I'm trying to start a project of my own and your solution seems almost tailor-made for my purposes. Sadly I use Windows 10, so when I run npm run start I get this:
`λ npm run start

<EMAIL_ADDRESS>start c:\Playground\StaticSites\tw
gulp serve
[18:39:11] Requiring external module babel-register
[18:39:12] Using gulpfile c:\Playground\StaticSites\tw\gulpfile.babel.js
[18:39:12] Starting 'serve'...
[18:39:12] Starting 'buildJekyll'...
[18:39:12] 'buildJekyll' errored after 13 ms
[18:39:12] Error: spawn bundle ENOENT
at Process.ChildProcess._handle.onexit (internal/child_process.js:264:19)
at onErrorNT (internal/child_process.js:456:16)
at processTicksAndRejections (internal/process/task_queues.js:80:21)
[18:39:12] 'serve' errored after 23 ms
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>start: gulp serve
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
`

What do you think might be causing this?

Hi taylor,
Thanks for creating this starter theme, it's been hugely helpful!
I still get the same error as adrivn with the new script, I was able to partially make this work after adding the following packages from npm:
win-node-env
win-spawn
Unfortunately I still get an error when trying to run "npm run build" locally on my machine or on Netlify, this is what Netlify returns when trying to deploy:

9:54:46 PM: Verify run directory
9:54:46 PM: Executing user command: npm run build
9:54:46 PM: npm
9:54:46 PM: ERR!
9:54:46 PM:  missing script: build

I can confirm the script is running against the correct directory.


Upgrade the PHD stack to the latest HAWQ <IP_ADDRESS>

HAWQ <IP_ADDRESS> minor update is released: https://network.pivotal.io/products/pivotal-hawq#/releases/272/file_groups/279

Upgrade the PHD stack provisioning scripts to setup HAWQ <IP_ADDRESS> YUM repo
Update the documentation to reflect the latest HAWQ version.

resolved


QC Mode requirements

Requirements according to @fabiobatalha :
Journal

journal publisher id
journal aggregator id
journal other id
Title
Subtitle
Abbreviated title
Translated Title
Translated Subtitle
other titles
ISSN (electronic, print, other)
publisher name

Issue

volume
number
publication date
received date
reviewed date
acceptance date
Issue Title

Article

Article Type
Article Language
Article ID (DOI, publisher ID, aggregator ID)
pages (first, last)
elocation
translated titles
abstract and translated abstracts
keywords and translated keywords
Document Type (Original Article, Review Article, etc)

free pub-id-type?

Author Notes
Editorial Notes
Bio Notes example  look for "notes biographiques"
acknowledgements example
look for "remerciements"

We'll support a great portion of it in Texture 1.0, but let's review this in Sao Paulo together and refine until everyone is happy.

@fabiobatalha I will remove the sao-paolo label. Should we keep this issue? or can we turn it into more specific ones? If so, could you help me with that, i.e. create specific issues?

Yeah please create separate ones, for everything that is missing from 1.0. Ideally with an example of XML + how the info should be displayed/edited.


loadDataDir option throws error for gzip file

In Node v22, when I try to load an in memory database with {loadDataDir: <myfile.gzip>) where the file is a gzip file created from .dumpDataDir('gzip'), I get Error: File is corrupted.
When I unzip the file on the command line into a directory, and then load that directory with loadDataDir, it works fine.
If that's a known limitation, it would be nice to have it documented. Thanks!
To reproduce:
const db = new PGlite({ dataDir: databaseFilename, extensions: { cube, earthdistance } });
await db.waitReady;
// Add some tables and records
const savedDb = await db.dumpDataDir('gzip');  // Using 'none' instead works fine
writeFileSync(archiveFilename, Buffer.from(await savedDb.arrayBuffer()));
db.close();

And then:
const loadDataDir = new Blob([readFileSync(archiveFilename)]);
const db = new PGlite({ loadDataDir, extensions: { cube, earthdistance } });

Thanks for the report. This isn't a know limitation, and as far as I'm aware should work.

I resolved this issue by using new Blob([fileBuffer], { type: 'application/x-gzip' }) to set the Blob type.