I’m great at system administration. I’m not bad at doing stuff in rails. With javascript, ember, and CSS,I am just a caveman.
In a plugin that changes who can send PMs, I am trying to add a button to the profile page when the user does not have permission to send a PM. I can add text right where I want it by putting stuff in assets/javascripts/discourse/templates/connectors/user-summary-stat/my-clever-name.hbs. (There was much rejoicing!).
I’d like to use that in my-clever-name.hbs, but that variable isn’t defined.
I think that maybe I need to create a my-clever-name.js.es6 in the same directory as my hbs file and include . . . something, and/or add some code that defines that variable so that I can access it, but I’ve re-read the developer’s guide a few times as well as tried to mimic code in some plugins that seem like they’re doing the same, but don’t see just how to do that.
So I’ll create assets/javascripts/discourse/components/my-plugin.js.es6 and extend . . . something . . .? It would seem like there’d be a way that I could just “turn on” those same variables that the other template I’m extending has access to. OH! Maybe extending that thing would in my component make those variables available to me?
Should I punt and back up and spend a week on the Ember tutorial?
So this is setting up a computed property called ‘fullName’ which is updated whenever ‘firstName’ or ‘lastName’ change. It becomes the value of the return.
import discourseComputed from "discourse-common/utils/decorators";
import User from "discourse/controllers/user";
export default Ember.Component.extend(User, {
classNames: ["restrict-pms"],
myFunThing: "this is text in my fun thing",
@discourseComputed("myvalue")
someThing(myvalue) {
return true;
}
});
Template.registerHelper("log", function(something){
console.log(something);
});
I think what I’m asking, which might not make sense, is what can I put in assets/javascripts/discoures/templates/connectors/user-profile-controls/add-link-to-subscription.hbs to be able to access myFunThing or myvalue?
The above code is in assets/javascript/discourse/components/user-private-messages.js.es6.
And I want to be able to use {{myFunThing}} and/or {{myvalue}} in assets/javascripts/discourse/templates/connectors/user-profile-controls/add-link-to-subscription.hbs but it’s undefined.
I believe that either one of those files is in the wrong place (I see that other text in the above hbs file is rendered on /u/username/summary, just without myFunThing), or that I’m importing the wrong class and/or I’m extending the wrong component.