시스템 관리에는 꽤 능숙합니다. Rails로 무언가를 하는 것도 나쁘지 않습니다. 하지만 JavaScript, Ember, CSS는 제게 원시인 수준입니다.
PM(개인 메시지)을 보낼 수 있는 사용자를 변경하는 플러그인에서, 사용자가 PM을 보낼 권한이 없는 경우 프로필 페이지에 버튼을 추가하려고 하고 있습니다. assets/javascripts/discourse/templates/connectors/user-summary-stat/my-clever-name.hbs 파일에 코드를 넣으면 원하는 위치에 텍스트를 추가할 수 있습니다. (정말 기뻤습니다!)
my-clever-name.hbs 파일에서 이 변수를 사용해보고 싶은데, 해당 변수가 정의되어 있지 않습니다.
아마도 my-clever-name.hbs 파일과 같은 디렉토리에 my-clever-name.js.es6 파일을 만들고 . . . 무언가를 포함하거나, 해당 변수를 정의하는 코드를 추가해서 변수에 접근할 수 있도록 해야 하는 것 같습니다. 하지만 개발자 가이드를 몇 번 다시 읽어보고, 같은 일을 하는 것처럼 보이는 다른 플러그인들의 코드를 참고해봐도 정확히 어떻게 해야 하는지 모르겠습니다.
그럼 assets/javascripts/discourse/components/my-plugin.js.es6 파일을 만들고 . . . 무언가를 . . . 확장하면 되는 건가요? 내가 확장하려는 다른 템플릿에서 접근할 수 있는 동일한 변수들을 그냥 "활성화"할 수 있는 방법이 있을 것 같은데. 아! 내 컴포넌트에서 그것을 확장하면 그 변수들이 나에게도 사용 가능해질까요?
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);
});
제가 묻고 있는 것(이해가 안 될 수도 있지만)은 assets/javascripts/discoures/templates/connectors/user-profile-controls/add-link-to-subscription.hbs 파일에 무엇을 넣어야 myFunThing이나 myvalue에 접근할 수 있는지에 대한 것입니다.
위 코드는 assets/javascript/discourse/components/user-private-messages.js.es6 파일에 있습니다.
assets/javascripts/discourse/templates/connectors/user-profile-controls/add-link-to-subscription.hbs 파일에서 {{myFunThing}} 또는 {{myvalue}}를 사용하고 싶은데, 정의되지 않은 상태입니다.
해당 파일 중 하나가 잘못된 위치에 있거나(위의 hbs 파일의 다른 텍스트는 /u/username/summary에서 myFunThing 없이 렌더링되는 것을 볼 수 있습니다), 잘못된 클래스를 가져오거나 잘못된 컴포넌트를 확장하고 있다고 생각합니다.