t4 toolbox - Preprocessed template - Dispose(bool)': no suitable method found to override - t4-toolbox

I have been using T4Toolbox with the custom tool 'TextTemplatingFileGenerator' and everything has been working great.
Recently, I have been in the process of trying to start using preprocessed templates (i.e., with the TextTemplatingFilePreProcessor custom tool property setting).
I added the TextTemplating and TextTemplating.Interfaces references. I included a copy of the T4Toolbox.dll in my local solution and referenced it as well.
To try to help simplify this question, I reduced the content of my TextTemplate1.tt template content to the following few lines:
<## template language="C#" hostspecific="true" #>
<## output extension="txt" #>
<## include file="T4Toolbox.tt" #>
The issue that I'm having is I get the following error when I include the T4Toolbox.tt file:
T4TooboxPreProcessedTemplates.TextTemplate1.Dispose(bool) : no suitable method found to override
Can someone help me get past this?
Thanks

I got past this by using the T4 Toolbox / Template item instead of the TextTemplate item. There is still an issue with the TextTransformation.Host being null but I posted a new question to address that.

Related

How do I extract a jpeg's EXIF thumbnail using ImageSharp?

I am trying to extract thumbnails from source jpegs and save them to the file system, using the C# ImageSharp library. I see there is some mention of it in the intellisense for the component:
SixLabors.ImageSharp.Image.Metadata.ExifProfile.CreateThumbnail()
...but I can't seem to find any documentation for it or examples to call it correctly.
I did find this:
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
//method code:
Image<TPixel> thumbnail = image.Metadata.ExifProfile.CreateThumbnail<TPixel>();
https://docs.sixlabors.com/api/ImageSharp/SixLabors.ImageSharp.Metadata.Profiles.Exif.ExifProfile.html
...but I need to find where the TPixel type is to get it to work. VisualStudio doesn't recognize it and I can't seem to find a namespace or use it correctly:
"The type or namespace name 'TPixel' could not be found (are you missing a using directive or an assembly reference?)"
Legacy Windows .NET Framework could do this for System.Drawing.Image.Image.GetThumbnailImage() and it worked pretty well.
EDIT: Using tocsoft's answer, I changed the code to:
if (image.Metadata.ExifProfile != null)
{
Image<Rgba32> thumbnail = image.Metadata.ExifProfile.CreateThumbnail<Rgba32>();
thumbnail.Save(thumbnailPath, encoder);
}
...however, the image.Metadata.ExifProfile is null, which is unexpected since I know these source images have EXIF data.
EDIT: Actually, it's working now. Success! Thank you!
TPixel would be any of the pixel formats in the SixLabors.ImageSharp.PixelFormats namespace. But unless you are planning on interoperating with other systems that require the pixel data layed out in memory in specific ways you will likely just want to use Rgba32
Image<Rgba32> thumbnail = image.Metadata.ExifProfile.CreateThumbnail<Rgba32>();

Override DS default layout

Using Drupal 8
I need to override the default DS "One Column Layout".To do that I use the suggested template name: ds-1col--tools-tools.html.twig . I have placed that file in various locations and then cleared cache but Drupal never picks up on it:
mytheme/templates/ds
mytheme/ds_layouts/templates/
mytheme/templates/ds_layouts/
mytheme/templates/
None of this places work, what could I possibly be doing wrong?
Through a comment from #Matoeil , I looked through Twig Debug's suggestions and they suggested a different kind of name for the file. When using Twig debugs suggestion, it recognized it right away.
So I suppose the suggestions made by Display Suite don't seem to work very well.

Uncaught error: There are multiple templates named 'velvet'. Each template needs a unique name. (..)

I have recently deployed my meteor app ( www[.]webmill[.]eu ) which was working just fine locally. I dealt with MIME type errors but am stuck with this one:
Error: There are multiple templates named 'velvet'. Each template needs a unique name. 1b1a247fc034d5089f331ec9540138ff6afd5f39.js:75:306
I checked but I don't have any duplicates and I can't find any info on how to solve this apart from a similar issue that existed with a meteor package, accounts-ui-bootstrap-3.
On desktop, I only get the initial full background image without being able to navigate anywhere on the page. Also I can put anything in my url like so : webmill.eu/nowaythisisarealurl and it will still display the same thing. It works as intended on displays under 1070 px width.
meteor packages I'm using:
meteor-platform
mizzao:bootstrap-3
pfafman:font-awesome-4
Any suggestions/help will be much appreciated!
You have two templates named velvet. I cloned your repo and ran this:
grep -r -i 'name="velvet"' *
Result:
app/client/image.html:<template name="velvet">
app/client/index.html:<template name="velvet">
Change the name of one of the templates.

Web Resource was not found

I've spent the last day trying to get a checkbox validator to work. I found some starting code on the 4GuysFromRolla website, however this was coded back in 2006 and doesn't play alongside updatepanels.
I've made changes and now it works. As I'd made quite a few changes I wanted to standardise it and use it alongside other utility classes, so I created a new class project and copied the code verbatim.
The problem is that the original works, but I get a WebResource not found error on my new class project.
The differences are: The original was a web application project:
my new project is simply a class library project.
The original assembly and namespace have changed.
Both contain a single class and a resource file (.js)
Both resource files are contained in the root directory
Both resource files are set to embed resource
I'm running out of ideas, and have exhausted the answers I've found on the web with no success.
Is there an issue with the fact that its a class library? Have I perhaps overlooked something else?
Its pretty difficult to see beyond those 2 questions because the project is so small and insignificant.
Here's the code that does work:
if (this.RenderUplevel && this.Page != null)
{
ScriptManager.RegisterClientScriptResource(Page, this.GetType(), "skmValidators.skmValidators.js");
}
Here's the code that doesn't:
if (this.RenderUplevel && Page != null)
{
ScriptManager.RegisterClientScriptResource(Page, this.GetType(), "ValidationExtender.EvaluationFunctions.js");
}
Anyone give any ideas?
Thanks in advance.
The error turned out to be a mismatch between the dll's in the test page.

Is it possible to intermix Modular templating and legacy VBScript CT?

In particular, the case I have in mind is this:
##RenderComponentPresentation(Component, "<vbs-legacy-ct-tcm-uri>")##
The problem I'm having is that in my case VBS code breaks when it tries to access component fields, giving "Error 13 Type mismatch ..".
(So, if I were to give the answer, I'd say: "Partially, of no practical use")
EDIT
The DWT above is from another CT, so effectively it's a rendering of component link, that's why parameterless overload as per Nuno's suggestion won't work unfortunately. BTW, the following lines inside VBS don't break and give correct values:
WriteOut Component.ID
WriteOut Component.Schema.Title
EDIT 2
Dominic was absolutely wright: it's a missing dependencies.
A bit more insight to make this info generally useful:
Suppose, the original CT looked like this ("VBScript [Legacy]" type):
[%
Call RenderComponent(Component)
%]
This CT was meant to be called from a PT, also VBS-based. That PT had a big chunk of "#include" statements in the beginning.
Now the story changes: the same CT is being called from another, DWT-based, CT. Obviously (thanks you all for your invaluable help!), dependencies are now not being included anywhere.
The solution to make original CT working again is to explicitly hand-pick and include all necessary VBS TBBs, so the original CT becomes:
[%
#include "tcm:<uri-of-vbs-tbb>"
Call RenderComponent(Component)
%]
Yes - it's perfectly possible to mix and match legacy and modular templates. Perhaps obviously, you can't mix and match template building blocks between the two techniques.
In VBScript "Error 13 Type mismatch" is sometimes used as a secret code that really means "I don't recognise the name of one of your variables, (including the names of Functions and Subs)" In the VBScript templating engine, variables from the page template could be in scope in your component template; it was very common, for example, to put the #includes in the PT so they could be used by the CT. My guess is that your component template is trying to use such a Function, and not finding it.
I know that you can render a Modular Page Template with VBScript Component Presentations, and also a VbScript page template can render a modular Component Template.
Your error is possibly due to something else? Have you tried just using the regular ##RenderComponentPresentation()## call without specifying which template?
The Page Template can render Compound Templates of different flavors - for example Razor, VBS, or XSLT.
The problem comes from the TBBs included in the Templates. Often the Razor templates will need to call functions that only exist in VBScript. So, the starting point when migrating templates is always to start with the helper functions and utility libraries. Then migrate the most generic PT / CT you have to the new format (Razor, XSLT, DWT, etc). This provides a nice basis to migrate the rest of the Templates as you have time to the new format.

Resources