Hot answers tagged

9

It appears that Alchemy does not yet pick up HTML files. Try creating it as an ASPX file instead. Static HTML files are often cached a little too aggressively by the browsers anyway, so you might want to avoid them in any case if you plan to do anything dynamic in it.


9

SDL has changed the namespace of their resource strings so something like : <%$ Resources: Tridion.Web.UI.Strings, None %> Will not work in Web8. It's recommended to create your own resource strings in your Alchemy project rather than piggy back on SDL's.


8

I have managed to debug my Alchemy Controllers, as any other C# code extension, using Remote Debugging in Visual Studio. First locate the Visual Studio version that you are using (including updates), corresponding to your development environment, and install the "Remote Tools For Visual Studio" in your Content Manager machine. Some configuration may be ...


8

The current version of Alchemy4Tridion (0.6.0) currently only packages the plugin's actual DLL into the .a4t package. We're working on some ideas for a dependency system for 3rd party DLLs to be configured to be packaged as well, without causing issues if two separate plugins use 3rd party libraries of different versions. The current workarounds (2 of ...


8

Version 0.5.0 of Alchemy4Tridion requires the previous version to be uninstalled before running the installer. You can do this by running the installer for 0.4.2 and first selecting the "Repair Alchemy4Tridion" option, then running again and selecting the "Remove Alchemy4Tridion" option. Once this has been completed the 0.5.0 installer will run successfully.


8

In the alchemy control room, it's possible to restrict access of who can install or uninstall plugins via Alchemy. To get to this, click the A4T menu, choose "Control room", and then choose "Alchemy Permissions" If you have a need to block access to the alchemy pages completely, then you could post a request on the github page https://github.com/...


7

No, it is currently not supported. We're awaiting the release of Tridion Sites 9.1 + to examine the changes made to the GUI.


6

It's hard to say exactly which features are effected by this since it's on a per-plugin basis. Many plugins work without this, but some, such as servicer require the impersonation to function correctly. I would expect this kind of information to be listed under the release notes for individual plugins. As for where you can update this information post-...


6

Generally with Alchemy I'd suggest creating a "Dependencies" folder in the root of your solution and placing any external DLLs there, then referencing them in your solution. If this doesn't work for you I'd log an issue at https://github.com/Alchemy4Tridion/Alchemy4Tridion/issues to have the Alchemy team look into whether there might be a bug.


6

Most likely if you are seeing the Alchemy Not Defined error message then you are missing the Alchemy WebAPI proxy from your resource group. Within your resource group, just add the following invocation: AddWebApiProxy(); This will ensure that the automatically generated JavaScript proxy is added as a file to your group. This proxy not only contains the ...


6

With static files such as JS and CSS files, they are required to be placed into a folder either named "Static" or "Assets". As you mention, Alchemy will then sort these files into a standard folder structure in the compiled .a4t file, with all JS files going into a JS folder, same for CSS, etc., with the exception being files placed into a "libs" folder, ...


6

The way that I've done this in the past is to create a function separate from the isEnabled function which I use to place the settings in a global variable. I then reference this from inside isEnabled. Due to the issues you outlined I was unable to have the getSettings inside my isEnabled function, though it may be possible with more JS expertise than I have....


6

I believe this .Clients property has been included to give you a wrapper around the different core service implementations. Alchemy should automatically make a call to the correct core service for the Tridion / SDL Web version (so you don't need to write two versions of the plugins, each using it's own core service call, or do any other tricks in your code). ...


5

Some users will receive this error when trying to uninstall the Alchemy 0.8.1 and 0.8.2 Alchemy4Tridion Installer. This is because the Alchemy Windows Service is running. The Alchemy Window Service was added to the 0.8.1 and 0.8.2 Alchemy4Tridion Installer. Some Tridion environments may block To resolve this issue you must: Run the command sc delete ...


5

I had a similar issue and got around it by temporarily disabling Anonymous Authentication in my SDL Tridion site IIS. Once the plugin is installed, you should be able to re-enable the Anonymous Authentication.


5

I am guessing you are just trying to install a test/demo plugin to start with Alchemy. I just tried to replicate the same error with the same versions, But it works fine for me. What I did: Download the Developer pack from visual studio gallery. Create a demo project selecting "Starter Plugin Project" template. Build the project (without any changes) ...


5

Finally I get my code working, based partially in the ideas outlined by Tanner Brine. I use a global setting as commented, and a function to read and assign the settings: takeSettings: function () { Alchemy.Plugins["${PluginName}"].Api.getSettings() .success(function (settings) { // assign setting to global variable globalSettings = ...


5

Your #6 was on the right track, you will want a POCO class to bind to. I believe your JavaScript call is where things went wrong though. I recreated your method, but with the following signature: [HttpPost] [Route("NewUser")] public string NewUser(NewUserModel model) { return "Test " + model.Name + " and " + model.Description; } And NewUserModel ...


5

As far as I know, this is not yet supported by Alchemy. I entered an issue about using string resources a little while ago: Support for string resources in ASPX and JavaScript The issue is still open, so it looks like we'll have to wait a little longer for that feature :)


5

Publishing to a target is a different permission from actually loading those objects, as you are doing in your code. I am sure you could send something to publish to those targets using code - because that's controlled by the same permissions that control the UI. To load the objects you need Admin rights indeed. You could use privilege elevation (available ...


5

In the event viewer, we noticed a stack trace that hinted that alchemy was trying to connect to the Session Aware Core Service using an empty username. After some more searching, we found that the Alchemy virtual directory had both anonymous access and Windows Authentication access enabled. After disabling this anonymous access, the problem was solved - ...


5

The following are the pretty straight forward steps I followed to get Alchemy installed on a Tridion 9.1.1966 environment: WARNING BLURB: As always, take care when modifying your windows registry settings by hand. I would recommend backing up your current registry unless you are completely comfortable with editing it yourself. Remember, you accept any ...


4

What I'd do: add your JS and CSS files inside Static->Scrips and Static->Styles respectivly. It's a fixed structure in Alchemy. Create a resource group object extending the ResourceGroup base class. say "Mynamespace.MyResourceGroup" In the constructor use AddFile method to add the files. Add your ResourceGroup to your Extension object. Using Dependencies....


4

Another option would be to include your dependencies in your plugin. You could use a tool like ILMerge -- or you could simply embed your dependencies as embedded resources and load them on-the-fly. This approach can also be used when you have an event system or TBB that depends on external assemblies.


4

Great thought Saurabh. I think because there are so many different times that an Alchemy plugin might be using the core service (on loading the CME, onclick of a ribbon button, etc) we'd basically have to have a client open at all times, which wouldn't be the most efficient either. The solution in place with the latest version of Alchemy is to create a "...


4

There is a button to update Alchemy from the Control Room, but it's currently listed as an experimental feature that you shouldn't use just yet. So for now, I'd recommend just making a list of the plug-ins you use and re-install them afterwards (if they are indeed lost). It's not like it takes a long time to install them -- just click the button for each ...


4

You should be able to call the alchemy service using code like the following: // This is the Promise pattern that the webapi proxy js exposes. Look at another example to // see how the callback method can also be used. Your WebAPI controller's route and route prefix // attributes controls how the namespace is generated. Alchemy.Plugins["<YOUR_PLUGIN_NAME&...


4

I hope you are trying to install it by accessing the webstore from the CME and clicking Installand receiving the above error - This is a known issue already reported with the Alchemy team I guess. Alternatively, you can visit the webstore in the browser and Downloadthe .a4t file - subsequently drag and drop the .a4t in the Alchemy in CME. further, check if ...


3

If the log file can be trusted, it appears that you already have it installed: {"authorId":"557fe091e4de02112cba019e","authorName":"Peter Kjaer","authorType":"Individual","averageUserRating":13,"downloads":4,"id":"567bd4ebe4de0217205ea3ea","iconId":"567beb2ae4de0217205ea403","name":"Count Items","userRatingCount":3} If this is an older version, you ...


3

You just need to make sure you call AddWebApiProxy() in the resource group for your dialog and then you can call your service methods like so: Alchemy.Plugins["${PluginName}"].Api.yourMethodHere(yourParameter) You need to add another ".something" after Api if you have added a AlchemyRoutePrefix attribute to your service: Alchemy.Plugins["${PluginName}"]....


Only top voted, non community-wiki answers of a minimum length are eligible